計網 Http 強制快取和對比快取

2021-10-22 12:35:50 字數 1065 閱讀 1543

對比快取

強制快取時,客戶端會先從本地快取裡面找,找到了就判斷快取是否過期。

強制快取主要是兩個字段:expires和cache-control

expires標識快取到期時間,是乙個絕對時間,也就是說,他返回的是幾幾年幾幾月幾幾日幾幾時幾幾分幾幾秒,如果客戶端從他的快取的這個字段裡面找到這個時間,發現這個時間過期了,那就會發起網路請求去獲取資料。

但是他的缺點也很明顯,由於這個時間是絕對時間,那我客戶端修改了本地時間,這個快取不就失效了嘛。

為了解決expires的問題,就引入了cache-control。cache-control代表了快取的有效期,是乙個相對時間,不管你客戶端本地時間是什麼,我只會返回給你乙個有效期,相當於倒計時,只要這個倒計時到零了,你就給去獲取快取了。

對比快取就是說他每次都會進行網路請求,只不過伺服器會根據他的字段的資料判斷他是否需要更新資料,如果需要,就把新資料返給客戶端,如果不需要,就返回304狀態碼讓客戶端繼續使用快取。

last-modified是伺服器返回給客戶端的,這個字段規定了資源最後一次修改的時間。然後客戶端在網路請求時就會將這個時間儲存在if-modified-since這個字段裡面去,然後伺服器判斷客戶端傳來的這個時間是否和他需要請求的資源的最後修改時間是否相等,如果相等,就證明資源沒有被修改,返回304,客戶端可以繼續使用快取;如果不相等,就證明資源被修改了,那就返回200狀態碼,並將新的資源傳送給客戶端。

由於這組關鍵字他的時間最低單位是秒,所以如果我有乙個資源在1s內發生了多次的修改,那last-modified和if-modified-since這組關鍵字就沒用了。

和last-modified和if-modified-since不一樣的是,etag和if-no-match直接使用識別符號去代表了。在伺服器給客戶端傳送資料時會帶有etag欄位,裡面存放著這個檔案最後一次被修改後生成的識別符號。然後當客戶端需要進行網路請求的時候,他就會把etag裡面的關鍵字放到if-no-match中去,然後去網路請求,伺服器會判斷這個識別符號和伺服器現在這個資源的識別符號是否相等,如果相等,就證明這個資源還沒有被修改,快取還可以使用,返回304;如果不相等,就證明資源發生了修改,客戶端需要更新資料,就返回200以及新的資料。

計網回顧 HTTP快取

根據快取策略的不同主要可以分為兩種型別 強制快取與對比快取 所謂強制快取是指,請求網路資料時,如果本地存在快取資料且快取資料有效,則直接使用快取資料,不必進行網路請求 否則通過網路請求獲取資料。主要就是下面兩個字段 參考expires 響應頭包含日期 時間,即在此時候之後,響應過期。例如 expir...

http協商快取與強制快取

瀏覽器快取 brower caching 是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件。expires的值為服務端返回的到期時間,即下一次請求時,請求時間小於服務端返回的到期時間,直接使用快取資料。不過expires 是http ...

協商快取 和 強制快取

總是記不住,今天手動記錄下來 1.強制快取頭 cache control cache control 是響應頭 內容可以是 cache control max age 3600,public,immutable 2.協商快取 if modified since tue,15 sep 2020 11 ...