我在Nginx上运行的Wordpress网站上使用Varnish Cache。它的配置方式与this blog中提到的方式相同。它工作正常,但我不确定它是否真的在缓存中提供内容。
如何确定?有人可以指导我。我是Varnish缓存的新手。
答案 0 :(得分:17)
Varnish默认情况下会将标头添加到它处理的任何请求的响应中。您可以使用Firebug等浏览器工具或 curl 或 GET 等CLI工具查看响应标头。这是一个GET示例:
sudo apt-get install libwww-perl && GET -Used http://localhost:6081/index.html
要查找的两个标题是 X-Varnish 和 Age 。 X-Varnish 将包含一个或两个数字,数字本身并不重要,但它们指的是请求。如果请求导致未命中,则Varnish从后端获取页面,响应中的X-Varnish标头包含当前请求的一个数字:
X-Varnish: 107856168
下次请求同一页面时,可能会导致点击。如果是这样,Varnish从缓存中提取页面,并添加原始请求中的数字:
X-Varnish: 107856170 107856168
Age 标头显示缓存副本的秒数。如果没有,它将为0,并且点击它是> 0
请注意,后端可以设置年龄标题,使其看起来像是一个错误的点击,堆叠的清漆可以在X-Varnish标头中产生错误的未命中。为了确保在调试时你可以在VCL命中和未命中函数中添加自己的标题。有关说明https://www.varnish-software.com/static/book/VCL_functions.html,请参阅此页面。作为Varnish的新手,X-Varnish和Age标头很可能是您所需要的。
答案 1 :(得分:2)
最好在vcl的各个位置添加自己的X-header,以便可以对vcl的各种代码路径和条件进行单元测试。
例如,在vcl_deliver中:
sub vcl_deliver
{
# Insert Diagnostic header to show Hit or Miss
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
set resp.http.X-Cache-Hits = obj.hits;
}
else {
set resp.http.X-Cache = "MISS";
}
...
}
答案 2 :(得分:0)
有几个很好的快速工具可以公开测试 varnish 是否正在缓存 - https://isvarnishworking.uk 和 https://isvarnishworking.co.uk,我用来测试 varnish 是否在几个站点上工作。它们主要依赖 X-Varnish 和 X-Cache 标头,但会显示所有标头,因此您可以在 varnish vcl 中设置任何您想要的内容,并且您可以在网页上看到标头