Varnish 似乎沒有緩存

Varnish 似乎沒有緩存

我已經設定了一個 Varnish 快取映像位於檔案伺服器前面,但它似乎無休止地從我的檔案伺服器重新下載資料。

總共大約有 100GB 的數據,但到目前為止 Varnish 已經從我的檔案伺服器下載了 800GB。

我使用的是 Varnish 附帶的預設 VCL 文件,而文件伺服器提供的文件的回應標頭類似於以下內容:

HTTP/1.1 200 OK
Cache-Control: max-age=290304000, public
Content-Type: image/jpeg
Expires: Wed, 29 Dec 2010 21:38:33 GMT
Server: Microsoft-IIS/7.0
E-Tag: "8b4723296ab697530768f18b1378b269"
Content-Disposition: inline; filename=image046.jpg;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 23 Dec 2010 05:38:33 GMT
Content-Length: 100592

我使用以下選項啟動 varnishd:

varnish/sbin/varnishd -a 0.0.0.0:80 -f varnish/etc/varnish/default.vcl -s file,varnish/var/lib/varnish/varnish_storage.bin,100G

答案1

sub vcl_recv {
    if (req.url ~ "\.(cur|gif|jpg|jpeg|swf|css|js|flv|mp3|mp4|pdf|ico|png)(\?.*|)$") {
      unset req.http.cookie;
      unset req.http.Accept-Encoding;
      unset req.http.Vary;
    }
}

如果您的請求包含cookie,它們將預設傳遞到後端。刪除編碼和變更將使事情更加規範化,這樣您就不需要在快取中維護一些圖像副本。另外,我認為 100G 對於您的後備存儲來說可能有點過多,您可能會考慮更接近機器中 RAM 大小的值。

相關內容