2

在设置我的 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 set beresp.ttl=1m 一样一起使用;设置 req.grace = 30s; 设置 beresp.grace = 1h;

我想要一些清晰。关于 ttl 的想法也很有用。可悲的是,许多文档仍然适用于 V2: http ://drupal.org/node/1823970

4

1 回答 1

4

两者在 VCL 代码中的不同位置使用。

使用(V3)使用的一些典型例子,区别是这样的。(用 obj 代替 req)。

sub vcl_fetch {
   set beresp.grace = 1h;
}

此代码告诉 varnish 将缓存对象标记为可使用长达 1 小时。

而这段代码:

sub vcl_recv {
  if (req.backend.healthy) {
    set req.grace = 30s;
  } else {
    set req.grace = 1h;
  }
}

...告诉清漆在指定的时间内使用标记的对象,基于(在这种情况下)后端是健康的。

TTL 是缓存项目的时间,除非您有一些非常特殊(或奇怪)的要求,否则最好在应用程序或 Web 服务器层中设置缓存标头)。

唯一需要在 VCL 中设置 TTL 的情况是,如果您想要与标头不同的东西,或者您需要静默(不将任何标头传递给请求浏览器)延长可以缓存对象的时间。

于 2013-04-09T04:04:53.390 回答