我是 Varnish 的新手,并且在 Debian Wheezy 上运行 v4.0。
我想为我的缓存设置 4 周的默认 TTL(非常静态的内容)。
通过阅读文档,我认为答案是default_ttl
在我的 VCL 文件中的某个位置设置一个选项。我有搜索了文档但只能找到一个参考對它來說。
我发现这个问题但我认为答案一定已经过时了,因为它对我来说不起作用。
有人可以解释一下如何在 Varnish 4.0 中做到这一点吗?
更新:这是我的配置文件(Varnish 4.0 附带的默认文件,除了我已将后端指向 localhost):
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_backend_fetch {
set obj.ttl = 4w;
}
sub vcl_recv {
# Happens before we check if we have this in cache already.
#
# Typically you clean up the request here, removing cookies you don't need,
# rewriting the request, etc.
}
sub vcl_backend_response {
# Happens after we have read the response headers from the backend.
#
# Here you clean the response headers, removing silly Set-Cookie headers
# and other mistakes your backend does.
}
sub vcl_deliver {
# Happens when we have all the pieces we need, and are about to send the
# response to the client.
#
# You can do accounting or modifying the final object here.
}
答案1
default_ttl
是运行时参数。您可以在启动时进行设置varnishd
。
默认TTL
单位:秒 默认值:120.000 最小值:0.000 标志:如果后端和 VCL 代码都没有分配 TTL,则分配给对象的 TTL。
您可以通过两种不同的方式设置此参数。无论选择哪种方式,效果都完全相同。
您可以使用快捷方式-t
-t ttl 指定缓存文档的最小生存时间。这是指定 default_ttl 运行时参数的快捷方式。
或者,您可以使用-p param=value
例如,你可以像这样启动 varnishd:
使用快捷方式:
varnishd -a 127.0.0.1:8081 -T 127.0.0.1 -t 2419200
使用更长的形式:
varnishd -a 127.0.0.1:8081 -T 127.0.0.1 -p default_ttl=2419200
2419200 这个数字是 4 周,以秒为单位。
答案2
可接受的答案是实现目标的一种方法。但是,实际上,您可以在 /etc/varnish/default.vcl 文件中完美地设置默认 TTL,如下所示:
sub vcl_backend_response {
set beresp.ttl = 4w;
}