在设置我的default.vcl文件(Varnish 3)时,我看到vcl_fetch使用beresp.grace或obj.grace的不同建议。有什么区别?
https://www.varnish-cache.org/docs/3.0/reference/vcl.html obj.grace 对象的宽限期(以秒为单位)。 obj.grace是可写的。 beresp.grace 设置为启用宽限期。
听起来几乎一样。
它们应该像https://www.varnish-software.com/static/book/Saving_a_request.html一样使用吗? 设beresp.ttl = 1m; 设置req.grace = 30s; 设beresp.grace = 1h;
我想要一些清晰度。关于ttl的想法也很有用。遗憾的是,许多文档仍然适用于V2: http://drupal.org/node/1823970
答案 0 :(得分:4)
这两个在VCL代码中的不同位置使用。
使用(V3)使用的一些典型示例,区别在于此。 (将obj替换为req)。
sub vcl_fetch {
set beresp.grace = 1h;
}
此代码告诉清漆标记缓存对象可以使用长达1小时。
这段代码:
sub vcl_recv {
if (req.backend.healthy) {
set req.grace = 30s;
} else {
set req.grace = 1h;
}
}
...告诉清漆使用标记的对象,直到指定的时间为基础(在这种情况下)后端是健康的。
TTL是项缓存的时间长度,除非您有一些非常特殊(或奇怪)的要求,否则最好在应用程序或Web服务器层中设置缓存标头。
您需要在VCL中设置TTL的唯一时间是,如果您需要与标题不同的内容,或者如果您需要静默(不将任何标题传递给请求的浏览器),则可以扩展对象的缓存时间。