配置 Varnish 为客户端缓存重写 Expires/Cache-Control 标头

kno*_*orv 7 performance cache varnish

如何配置 Varnish,以便对匹配“*.css”的请求的所有响应都在客户端的浏览器中缓存 30 天?

我想要实现的是让 Varnish 设置正确的“Expires:”和/或“Cache-Control”设置,以便所有 CSS:s 都缓存 30 天,而不管后端对这些对象。

kno*_*orv 12

这是诀窍:

sub vcl_fetch {
  ..
  if (req.url ~ "\.css$") {
    set obj.http.magicmarker = "1";
  }
  ..
}

sub vcl_deliver {
  ..
  if (resp.http.magicmarker) {
    unset resp.http.magicmarker;
    set resp.http.Cache-Control = "...";
    set resp.http.Expires = "...";
    set resp.http.Age = "...";
  }
  ..
}
Run Code Online (Sandbox Code Playgroud)