【问题标题】:Can Varnish generate ETags?Varnish 可以生成 ETag 吗?
【发布时间】:2014-05-13 07:58:05
【问题描述】:

有没有办法让 Varnish 为它收到的后端响应生成一个 ETag 并将其添加到响应中?我宁愿在 Varnish 中使用所有 ETag 逻辑,而不是为我的所有后端节点单独配置它。

我正在使用 Varnish 4.0.0。

【问题讨论】:

    标签: caching varnish etag


    【解决方案1】:

    Etags 目前没有在 Varnish 中实现 (see the wiki)。

    【讨论】:

      【解决方案2】:

      您可以根据需要在 VCL 中创建 etag 标头及其值。

      sub vcl_backend_response {
          if (!beresp.http.Etag) {
              set beresp.http.Etag = "W/foo";
          }
      }
      

      这里的主要问题是如何使 Etag 反映对象的主体。您必须知道您的应用程序如何安全地执行此操作。一种方法是将日期响应标头与 URL 一起提供给 libvmod-digest,并将散列输出设置为 Etag。

      在 Varnish 4.0.0 中,您(wiki 已过时)支持 If-Modified-Since/If-None-Match 到后端,因此如果您选择在 VCL 中执行此操作,请记住在 vcl_backend_fetch 中对其进行过滤,以便您不要混淆你的后端。

      一般来说,我建议不要在 VCL 中这样做。在后端添加它通常只是启用一个模块。 VCL 中的实际更改很简单,但这是 HTTP 的棘手部分之一,很容易出错。

      【讨论】:

        猜你喜欢
        • 2014-03-06
        • 1970-01-01
        • 2010-09-05
        • 1970-01-01
        • 2015-08-01
        • 2014-03-02
        • 1970-01-01
        • 1970-01-01
        • 2020-10-14
        相关资源
        最近更新 更多