瀏覽器會儲存使用者最近請求過的資源,當使用者再次請求同一資源時,瀏覽器可以直接從本地讀取
這樣,不僅可以提高瀏覽器的載入速度,也能減輕伺服器的負載壓力,可以說是一舉兩得
具體而言,瀏覽器的快取策略分為兩種,一種是強快取(又稱本地快取),一種是弱快取(又稱協商快取)
它們的行為會根據響應頭和請求頭的特定字段決定
本地快取:當乙個請求發生時,瀏覽器自己決定是否從快取中讀取資料在瀏覽器第一次請求資源時,伺服器會返回資源,並在響應中設定
expires
或cache-control
字段
然後瀏覽器會把這些資訊都快取下來,當再次請求資源時,瀏覽器先不向伺服器傳送請求
而是根據該資源的expires
或cache-control
字段判斷快取的資源是否已經失效
如果快取沒有失效,那麼直接讀取快取拿到資源
注意,由於exprise
使用的是絕對時間,如果服務端和客戶端的系統時間相差較大,容易出現快取混亂
exprise
和cache-control
可以同時設定,在同時設定的情況下cache-control
的優先順序高於exprise
協商快取:當乙個請求發生時,由伺服器來決定是否從快取中讀取資料在瀏覽器第一次請求資源時,伺服器會返回資源,並在響應中設定
last-modified
或etag
字段
然後瀏覽器會把這些資訊都快取下來,當再次請求資源時,瀏覽器會傳送乙個 conditional get 請求
並在請求中帶上if-modified-since
或if-none-match
字段
伺服器根據if-modified-since
或if-none-match
欄位的值判斷快取的資源是否已經失效
如果快取沒有失效,那麼返回 304,但不返回資源,瀏覽器收到 304 後就從快取中讀取資源
如果快取已經失效,那麼返回 200,並且返回資源,瀏覽器收到 200 後它就使用返回的資源
注意,last-modified
和if-modified-since
是成對出現的,etag
和if-none-match
是成對出現的
last-modified
和etag
可以同時設定,在同時設定的情況下etag
的優先順序高於last-modified
在實際使用中,本地快取和協商快取一般都會同時使用,乙個完整的過程如下:
使用者在瀏覽器上進行的操作對瀏覽器快取的使用方式有很大的影響
但普通重新整理 ( f5 ) 會忽略強快取而啟用弱快取,而強制重新整理 ( ctrl + f5 ) 會同時忽略強快取和弱快取
快取 瀏覽器快取
瀏覽器快取 brower caching 是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件 1 瀏覽器第一次請求時,會發出一組 http 頭,用來指導瀏覽器如何進行快取。伺服器規定乙個資源是否要進行快取,主要由響應頭中的expires...
瀏覽器快取
1.為什麼使用瀏覽器快取 以前了解的動態指令碼加速,或者動態內容快取之類,他們的原理都是避免伺服器重複計算,結果仍保留在伺服器端,這樣獲取資料還得從伺服器檢索然後傳送到使用者瀏覽器,如果我們把這些結果放在瀏覽器中,就省去了伺服器的查詢和網路傳輸,瀏覽器快取很好的實現了這個功能 2.瀏覽器快取存放在哪...
瀏覽器快取
瀏覽器快取知識歸納 瀏覽器快取是提公升網頁效能的一大利器,但是,也是一把雙刃劍。利用的好網頁的效能會有大幅度提公升,伺服器的壓力也會減小。利用的不好,也會遇到很多的問題。本文結合瀏覽器快取的知識,結合真實案例進行分析,希望對讀者有所幫助。瀏覽器快取分類 瀏覽器快取分為強快取和協商快取,瀏覽器載入乙個...