有什么区别beresp.grace& obj.grace

时间:2013-04-05 12:21:45

标签: configuration varnish

在设置我的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

1 个答案:

答案 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的唯一时间是,如果您需要与标题不同的内容,或者如果您需要静默(不将任何标题传递给请求的浏览器),则可以扩展对象的缓存时间。