在 Varnish 4.0 中设置默认 TTL?

在 Varnish 4.0 中设置默认 TTL?

我是 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;
}

相关内容