HTTP的強快取與協商快取

2021-09-29 11:42:15 字數 1222 閱讀 3211

快取就是瀏覽器將最近請求過的資源儲存在本地磁碟或者記憶體當中,當再次訪問的時候,就不用通過請求伺服器來載入資源,可以直接從本地獲取資源,從而加快資源載入速度,減輕伺服器壓力。但是問題來了,如果伺服器上的資源更新了,而我們還是從本地取舊的資源怎麼辦呢?於是就有了強快取和協商快取的區別了。

強快取就是瀏覽器根本不會發請求給伺服器,通過http頭中的expirescache-control兩個欄位來控制的,如果兩個字段滿足條件,就不會去向伺服器發出請求直接使用快取。

這兩個欄位是用於控制快取的有效時間的,其中expires是http1.0的,其儲存的值是乙個絕對時間的gmt格式的字串,這個時間代表快取在這個時間之前始終是有效的。而cache-control是http1.1的,其中的cache-control:max-age表示的是資源可以被快取的最長時間。如果兩者同時存在,cache-contol會優先生效

上面的強快取是在本地判斷快取的資源是否可以繼續用,而協商快取顧名思義就是和伺服器求證這個資源是否未被更新,從而決定要不要繼續使用本地快取的資源。

這兩個頭都是gmt格式的字串,其中,last-modified是在響應頭中的,if-modified-since是在請求頭中的。

瀏覽器第一次和伺服器請求資源的時候,伺服器在返回資源的時候如果有last-modified就表明這個資源在伺服器上最後的修改時間。

當瀏覽器再次跟伺服器請求資源的時候,就會加上if-modified-since這個header,它的值就是上一次伺服器發回來last-modified中的值。

然後伺服器會根據資源最後的修改時間判斷是否返回304,如果返回304,瀏覽器收到後就會使用本地的快取

這兩個值是每乙個資源的唯一識別符號,etag存在於響應頭中,if-none-match存在於請求頭中,只要資源變化了,這個值就會改變,其判斷過程與上面類似。

注意:伺服器會優先驗證etag,然後再驗證last-modified,兩個都通過了才會返回304

最後附上一張圖

http協商快取和強快取

http協商快取和強快取 1.瀏覽器快取 為了節約網路資源,加速瀏覽,瀏覽器在使用者磁碟上對最近請求過的文件進行儲存,當訪問者再次請求這個頁面時,瀏覽器就可以直接從本地磁碟讀取資源並展示,這樣就可以加速頁面的閱覽。快取這東西,第一次必須獲取到資源後,然後根據返回的資訊來告訴如何快取資源,可能採用的是...

Http強快取和協商快取

本文主要講解瀏覽器端的快取,快取的作用是不言而喻的,能夠極大的改善網頁效能,提高使用者體驗。快取這東西,第一次必須獲取到資源後,然後根據返回的資訊來告訴如何快取資源,可能採用的是強快取,也可能告訴客戶端瀏覽器是協商快取,這都需要根據響應的header內容來決定的。下面用兩幅圖來描述瀏覽器的快取是怎麼...

http協商快取VS強快取

之前一直對瀏覽器快取只能描述乙個大概,深層次的原理不能描述上來 終於在前端的兩次面試過程中被問倒下,為了洩恨,查閱一些資料最終對其有了乙個更深入的理解,廢話不多說,趕緊來看看瀏覽器快取的那些事吧,有不對的地方,請各位不吝賜教啊。本文主要講解瀏覽器端的快取,快取的作用是不言而喻的,能夠極大的改善網頁效...