我按照此处的教程“完美服务器 - Ubuntu 11.10 [ISPConfig 3]”操作。我在 Rackspace 上运行 Ubuntu 11.04 (Natty Narwhal) 服务器,内存为 1024。我已经完成并更新到 ISPConfig 3.0.4。在我决定尝试安装 Varnish 之前,一切都运行良好。最初,我通过执行以下命令安装 Varnish:
apt-get update
apt-get upgrade
apt-get install varnish
显然安装的版本是 Varnish 2.x,所以我返回并添加了 varnish-cache.org 提供的软件包的存储库
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
echo "deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0" >> /etc/apt/sources.list
apt-get update
apt-get install varnish
这将我的 Varnish 版本更新至 3.0.2
然后我继续做出以下改变:
vim /etc/default/varnish
change DAEMON_OPTS to port 80:
vim /etc/apache2/ports.conf
NameVirtualHost *:8000
Listen 8000
vim /etc/apache2/sites-available/default
<VirtualHost *:8000>
vim /etc/apache2/sites-available/ispconfig.vhost
Listen 8080
NameVirtualHost *:8080
<VirtualHost _default_:8080>
然后我继续设置其他虚拟主机以使用 8000(apache2 端口)
完成所有这些设置后,我重置了 Apache2 和 Varnish 进行测试。我在 Firefox 11.0 中使用了 Firebug
从我看到的输出来看,似乎并不能表明 Varnish 工作完全正确:
首先我看到的是:X-Varnish 1644834493,但我听说,除非你有两个并排的时间戳,否则它可能无法正常工作,例如,我想我可能会看到类似这样的内容:
X-清漆 1644834493 1644837493
此外,如果我注意到输出中这似乎是不稳定的:
X-Drupal-缓存 MISS
有时它也会说HIT....
所以我的问题是我认为 Varnish 部分工作正常,但是为什么我没有像我想的那样在 X-Varnish 上看到两个时间戳,并且我截屏的输出看起来正确吗?如果 Varnish 不工作,有人能告诉我我可能做错了什么吗?
提前致谢。
答案1
关于 X-Varnish 标头:第一个 ID 是内部请求 ID,因此每次都会发生变化。如果有第二个值,则 Varnish 会为您提供缓存对象。第二个 ID 是此对象的内部缓存 ID。
关于您的假设,您说得对,Varnish 并未提供缓存内容。您还可以检查 Age 标头,它告诉我们内容已有 0 秒(因此是新鲜的)。响应的允许最大期限在 Cache-Control 标头中设置:在您的情况下为 180 秒。这其实不是很长,但足以进行进一步测试。
请检查响应标头以执行以下操作(注意在浏览器中启用缓存 - 对于 Firefox,您可以通过 Web 开发人员栏启用/禁用它):
- 第一次刷新加载测试页面后,单击浏览器中的“重新加载”
- 首次加载测试页面后,点击浏览器地址栏并按 Enter
浏览器以不同的方式处理两种获取内容的方式(有关详细信息,请查看您的请求标头)。通过按重新加载按钮(或通过 Web 开发人员栏禁用缓存),您的浏览器会发送 Cache-Control 标头以强制交付新内容,而 Varnish 会遵守这些要求。通过第二次加载相同的 URL(例如,单击链接、使用前进和后退按钮、在浏览器地址栏中按 Enter 键...),您的浏览器不会发送这些 Cache-Control 标头,而 Varnish 能够交付缓存的内容。
如果您想要缓存该行为并且想要强制使用缓存内容,您可以优化 Varnish 的配置。但这是另一个故事。
关于您的 X-Drupal-Cache 标头:此标头由 Varnish 使用的后端设置。这告诉您 Varnish 已将新内容用于其缓存或响应。