F5重新整理瀏覽器不快取靜態資源

2021-07-07 10:43:41 字數 789 閱讀 5029

最近在優化線上的乙個web站點,發現很多css和js按f5重新整理的時候,不快取,這個可是乙個可以優化的點啊!

第一反映就是檢查是否配置了快取,用瀏覽器檢視response header如下:

看到這個response header 就更加讓人奇怪了,明明配置了快取,也配置了過期時間,為什麼按f5重新整理頁面沒有出現304 not modify ?

然後想到找個快取了的來對比下,正常快取的response header如下:

比較發現,能夠正常快取的response header中多了etag和last-modified這兩個field。由此,在本地測試環境中,去掉這兩個field.

在apache的http.conf中加入如下配置:

去掉response header中的etag和last-modified後,按f5重新整理,就不出現快取了。

後來認真看了下資料,發現這個問題是自己對於瀏覽器快取的機制,沒有認識清楚。

官方正解:

expire只是讓靜態資源快取到本地並設定過期事情,所以用回車或後退觸發的請求或直接使用本地快取。

f5重新整理會跳過本地快取,發起乙個請求到伺服器,然後與伺服器協商,如果伺服器上沒有變動則返貨304(not-modified)並使用本地資源,

否則從伺服器返回最新的資源。



瀏覽器的「重新整理」 「快取機制」

1 last modified 在瀏覽器第一次請求某乙個url時,伺服器端的返回狀態會是200,內容是你請求的資源,同時有乙個last modified的屬性標記此檔案在服務期端最後被修改的時間,格式類似這樣 last modified fri,12 may 2006 18 53 33 gmt 客戶...

禁止後退按鈕和瀏覽器重新整理後不快取

由於不存在能夠完全禁用後退按鈕,所以 最好的方案應該是 混合運用客戶端指令碼和伺服器端指令碼。asp.net 後台 response.buffer true response.expiresabsolute datetime.now.adddays 1 response.cache.setexpir...

強制瀏覽器頁面不快取

我想出兩種方案,1 伺服器端返回檔案的時候,設定響應頭,cache control no cache 貌似是這樣,告訴瀏覽器不要快取 2 前端控制,核心是,如何區分 裡修改 url 導致的重新整理和使用者的重新整理,原理 修改 url 的重新整理,不能繼續重新整理,否則陷入死迴圈 使用者的重新整理要...