Performance

配置 Varnish 為客戶端記憶體重寫 Expires/Cache-Control 標頭

  • November 9, 2012

如何配置 Varnish 以便對匹配“*.css”的請求的所有響應都在客戶端的瀏覽器中記憶體 30 天?

我想要實現的是讓 Varnish 設置正確的“Expires:”和/或“Cache-Control”設置,以便所有 CSS:s 記憶體 30 天,而不管後端對客戶端可記憶體性的說法是什麼這些對象。

這可以解決問題:

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 = "...";
 }
 ..
}

我認為 Varnish 不會讓您將 VCL 規則範圍限定為“*.css”。您可能需要在 Varnish 郵件列表中詢問有關這方面的確切資訊。應該可以按 MIME 類型確定範圍。

假設您的對像已經設置了記憶體標頭但您希望對其進行規範化,那麼此 Varnish 文件 VCL 的修改版本應該可以幫助您:http: //varnish.projects.linpro.no/wiki/VCLExampleLongerCaching

一般來說,Varnish 不是為了進行大量的標題或內容重寫而建構的。您的 Web 伺服器或 Web 應用程序應該比 Varnish 做得更好。

引用自:https://serverfault.com/questions/54219