這裡我們先談下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中加了乙個隨時更新的變數,那麼,提交時是不會...