gpt4 book ai didi

Varnish 3 - 如何在http header 中设置最大年龄

转载 作者:行者123 更新时间:2023-12-02 10:51:55 25 4
gpt4 key购买 nike

我正在使用 Varnish 3.0.3,并通过在静态资源的 HTTP header 中设置最大期限来使用它来利用浏览器缓存。我尝试将以下配置添加到default.vcl:

sub vcl_fetch {
if (beresp.cacheable) {
/* Remove Expires from backend, it's not long enough */
unset beresp.http.expires;

/* Set the clients TTL on this object */
set beresp.http.cache-control = "max-age=900";

/* Set how long Varnish will keep it */
set beresp.ttl = 1w;

/* marker for vcl_deliver to reset Age: */
set beresp.http.magicmarker = "1";
}
}

sub vcl_deliver {
if (resp.http.magicmarker) {
/* Remove the magic marker */
unset resp.http.magicmarker;

/* By definition we have a fresh object */
set resp.http.age = "0";
}
}

这是从 https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching 复制的。也许我只是打错了。重新启动 Varnish 后,它不再起作用。

我有两个问题。这是 Varnish 3 的正确方法吗?如果是这样,我做错了什么?其次,有没有办法在重新启动之前测试 Varnish 配置文件?类似于 Apache 的“/sbin/service httpd configtest”。在上线之前发现错误。谢谢。

最佳答案

是的,一般来说这是覆盖后端TTL的方法。删除 beresp.http.expires,设置 beresp.http.cache-control,设置 beresp.ttl。beresp.cacheable 是一个 2.[01]-ism。 3.0 中的相同测试是检查 beresp.ttl > 0。

一个小技巧是将你的魔术标记存储在 req.http 上,这样你就不必在将对象交给客户端之前清理它。

关于测试配置文件,您可以直接使用“varnishd -C -f/etc/varnish/default.vcl”调用VCL编译器。如果您的 VCL 有故障,您会收到错误消息;如果 VCL 有效,您会收到一些带有生成的 C 代码的页面。

关于Varnish 3 - 如何在http header 中设置最大年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12864245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com