瀏覽器快取分為強快取和協商快取。
瀏覽器載入頁面的簡單流程如下:
強快取通過http響應頭中的expires和cache-control來控制。expires返回乙個絕對時間,代表此資源的失效時間;而cache-control是相對時間,代表資源的有效期(秒)。兩者可同時啟用,但cache-control的優先順序更高。若命中強快取,在chrome開發者工具中可看到http的返回碼是200,但size列會顯示from cache。
協商快取
瀏覽器將請求傳送給伺服器,伺服器會根據http請求頭中的last-modify/if-modify-since或etag/if-none-match來判斷是否命中協商快取。若命中,則返回碼為304,瀏覽器從快取中載入資源。
last-modify/if-modify-since 瀏覽器第一次請求資源時,伺服器返回頭會加上last-modify,標識資源最後的修改時間,再次請求資源時,瀏覽器請求頭會包含if-modify-since,其值為上次請求返回的last-modify,伺服器根據資源的最後修改時間來判斷是否命中快取。
etag/if-none-match 返回的是乙個校驗碼,etag可保證每乙個資源是唯一的,資源變化都會導致etag變化。伺服器根據瀏覽器請求頭中的if-none-match來判斷是否命中快取。
答疑etag擴充套件說明
會根據檔案大小,檔案最後修改時間等因子來生成,理論上會重複,但是概率很小可以忽略。
在分布式系統中多台機器的檔案必須保持last-modify一致,以免負載均衡的時候會導致比對失敗;
在分布式系統中盡量關閉etag,因為每台機器生成的etag都不一樣。
瀏覽器行為對快取的影響
瀏覽器快取實現原理
瀏覽器快取將檔案儲存在客戶端,好的快取策略可以減少對網路頻寬的占用,可以提高訪問速度,提高使用者的體驗,還可以減輕伺服器的負擔。因此我們有必要了解它的實現原理,用來提高 的效能。當乙個客戶端請求web伺服器,請求的內容可以從以下幾個地方獲取 伺服器 瀏覽器快取中或快取伺服器中。這取決於伺服器端輸出的...
瀏覽器快取實現原理
瀏覽器快取將檔案儲存在客戶端,好的快取策略可以減少對網路頻寬的占用,可以提高訪問速度,提高使用者的體驗,還可以減輕伺服器的負擔。因此我們有必要了解它的實現原理,用來提高 的效能。當乙個客戶端請求web伺服器,請求的內容可以從以下幾個地方獲取 伺服器 瀏覽器快取中或快取伺服器中。這取決於伺服器端輸出的...
瀏覽器 HTTP 快取原理分析
以前專案中遇到了很多瀏覽器快取相關的問題,也在網上查過資料,搞過伺服器的配置,來確保客戶端載入伺服器資源的速度和資源有效性。最近仔細看了下http協議中和快取相關的一些屬性,總結一下。瀏覽器第一次訪問伺服器資源 index.html 在瀏覽器中沒有快取檔案,直接向伺服器傳送請求。伺服器返回 200 ...