簡體   English   中英

澄清“ Cache-Control”頭的用法

[英]Clarification on usage of “Cache-Control” header

我們正在努力縮短網站的頁面加載時間 除了其他一些優化之外,我還添加了一個servlet過濾器,以將“ Cache-Control ”標頭設置為圖像文件(png,gif,jpg)。 正如預期的那樣,圖像文件現在已在客戶端緩存,我可以通過檢查temp文件夾(IE)來驗證每個文件的過期時間 。我的問題是,瀏覽器仍然請求靜態資源並獲得HTTP304 (未修改) )響應。 我的意思是,實際上,我所實現的是我減少了傳輸的字節數,但沒有減少網絡往返的次數(在我看來,這有點慢)。 還有其他阻止瀏覽器檢查服務器是否已修改資源的標頭/方式嗎?

@chedine,

瀏覽器緩存的文件不應返回304,而應返回200。您應使用mod_expires設置最長期限,並使用mod_headers設置Cache-Control標頭。 以下示例為瀏覽器緩存的靜態文件返回有效的200響應:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css M5184000
    ExpiresByType application/x-javascript M5184000
    ExpiresByType text/html M1200
    ExpiresByType text/plain M1200
    ExpiresByType image/gif M31536000
    ExpiresByType application/x-gzip M31536000
    ExpiresByType image/x-icon M31536000
    ExpiresByType image/jpeg M31536000
    ExpiresByType image/png M31536000
</IfModule>

<FilesMatch "\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$">
    <IfModule mod_headers.c>
         Header set Vary "Accept-Encoding, Cookie"
        Header set Pragma "public"
        Header append Cache-Control "public, must-revalidate, proxy-revalidate"
    </IfModule>
</FilesMatch>

什么是緩存控制設置,您應該能夠設置最大壽命,並使其在一段時間內不回來。

您可能想嘗試提琴手查看您的http請求/響應,並確保它是您所認為的。

有關詳細信息,請參見http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

是的,在瀏覽器本身上。 例如,在IE中的“瀏覽歷史記錄”設置下,選擇“檢查存儲頁面的較新版本”-選擇“從不”將“兌現”有效期,並避免請求/未經修改的服務器訪問,直到達到規定的有效期。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM