Varnish 将缓存标头发送到浏览器

Varnish 将缓存标头发送到浏览器

varnish 是否可以将“Cache-Control:no-cache、no-store、must-revalidate”缓存控制响应发送给浏览器,而 varnish 缓存该响应。

场景是这样的。

  • 后端发送缓存控制:Cache-Control: no-cache, no-store, must-revalidate
  • Varnish 应该缓存响应。
  • 浏览器不应该缓存内容,因此 varnish 对浏览器的响应应该显示“缓存控制:Cache-Control:no-cache,no-store,must-revalidate”

我曾尝试在 set beresp.http.Cache-Control 中使用 Cache-Control:no-cache、no-store、must-revalidate,但这导致 varnish 不缓存响应。

下面给出的是使用的 vcl_backend_response。

    sub vcl_backend_response {
    if (bereq.url == "/") {

    unset beresp.http.expires;
    unset beresp.http.set-cookie;
    set beresp.ttl = 3600s;
    set beresp.http.Cache-Control = "max-age=0";
    if (beresp.status >= 400 && beresp.status <= 599) {
        set beresp.ttl = 0s;
    }
  }
}

非常感谢您的帮助。

答案1

当然,在你的.vcl 配置文件中使用 vcl_deliver:

sub vcl_deliver {
   set resp.http.Cache-Control = "no-cache, no-store, must-revalidate, private";
   set resp.http.Pragma = "no-cache";
}

相关内容