靜態資源使用時間戳控制瀏覽器快取

2021-09-22 13:15:57 字數 813 閱讀 5424

這裡我們先談下http響應碼304,首先304狀態碼表示瀏覽器資料未發生改變,直接使用本地快取。

請求過程:

瀏覽器向服務端請求資源,伺服器會看是否攜帶last modified頭,即上次修改時間,若沒有則響應200;

若有則比較last modified和服務端資源修改時間,若客戶端資源修改時間小於伺服器資源修改時間,則響應200;若大於則響應304,直接使用客戶端快取。

上面講到http 304狀態碼其實已經幫我們實現了控制快取功能 (其實快取功能本質是瀏覽器幫我們實現的,這點要分清),為什麼還要再靜態資源後面加時間戳呢?

其實,在生產環境中,我們會存在資源頻繁的修改和上線的情況,有時會存在這樣的情況:

伺服器在2019-10-01上線

使用者在2019-10-05訪問,瀏覽器記錄下修改時間

2019-10-05上線新css/js等檔案,最後一次修改時間還是保留上次上線的時間(極端情況)

2019-10-06 使用者再次訪問,發現客戶端最後修改時間 > 伺服器檔案修改時間,因此不會重新整理快取

為了避免瀏覽器一直使用舊的快取資源,所以上線時,一般都會給靜態資源加上乙個時間戳(一般為上線日期),如index.js?v=2019-5-15,實現強制重新整理瀏覽器快取。

使用時間戳解決瀏覽器快取問題

在ie或者其他的很多瀏覽器中,如果你每次請求的位址是相同的,瀏覽器就不會去連線伺服器而是去讀取快取,這樣對於很多應用來時是非常好的,可以降低伺服器的壓力或者減少頻寬的使用,但是對於ajax應用,很多都是必須保持時時的連線與伺服器進行互動,所以需要使用乙個小技巧,時間戳來使每次的請求位址都不同,從而跳...

使用時間戳解決瀏覽器快取問題

在ie或者其他的很多瀏覽器中,如果你每次請求的位址是相同的,瀏覽器就不會去連線伺服器而是去讀取快取,這樣對於很多應用來時是非常好的,可以降低伺服器的壓力或者減少頻寬的使用,但是對於ajax應用,很多都是必須保持時時的連線與伺服器進行互動,所以需要使用乙個小技巧,時間戳來使每次的請求位址都不同,從而跳...

Ajax要使用時間戳提交

當你的ajax需要的資料是及時更新的,也就是說在沒有重新整理頁面的情況下,得到其他操作的新資料,你的ajax提交url中加入乙個時間戳,這樣,就可以避免頁面使用快取了,原理是 時間戳本事就是乙個隨時更新的變數,時間戳只是乙個叫法,你可以這麼理解 你的url中加了乙個隨時更新的變數,那麼,提交時是不會...