瀏覽器快取

2021-09-25 00:12:57 字數 1850 閱讀 3498

瀏覽器快取指的是http快取,而storage是應用層快取,不一樣

瀏覽器快取分為兩類:強快取和協商快取

先了解一下瀏覽器快取機制:

快取這東西,第一次必須獲取到資源後,然後根據返回的資訊來告訴如何快取資源,可能採用的是強快取,也可能告訴客戶端瀏覽器是協商快取,這都需要根據響應的header內容來決定的。下面用兩幅圖來描述瀏覽器的快取是怎麼玩的,讓大家有個大概的認知。

第一次請求

後續請求

2.下一次載入資源時,先比較當前時間和上一次返回200時的時間差,如果沒有超過cache-control設定的max-age,則沒有過期,命中強快取,不發請求直接從本地快取讀取該檔案(如果瀏覽器不支援http1.1,則用expires判斷是否過期);如果時間過期,則向伺服器傳送header帶有if-none-match和if-modified-since的請求

3.伺服器收到請求後,優先根據etag的值判斷被請求的檔案有沒有做修改,etag值一致則沒有修改,命中協商快取,返回304;如果不一致則有改動,直接返回新的資源檔案帶上新的etag值並返回200;

4.如果伺服器收到的請求沒有etag值,則將if-modified-since和被請求檔案的最後修改時間做比對,一致則命中協商快取,返回304;不一致則返回新的last-modified和檔案並返回200;

強快取

瀏覽器在規定時間內強制使用瀏覽器內的快取:

意思是這個時間之前強制使用瀏覽器快取,缺點是這個時間是絕對時間,所以客戶端時間不正確會導致許多錯誤

意思是客戶端相對當時客戶端3600秒之內強制使用瀏覽器快取,優點是不管客戶端時間如何,只要沒超過3600秒,都能正確使用快取

expires和cache-control都存在時以cache-control為準

協商快取

與詢問伺服器是否需要使用瀏覽器快取

last-modified/if-modified-since

二者的值都是gmt格式的時間字串,具體過程:

:瀏覽器快取分為兩種,一種是強快取,一種是協商快取。強快取就是在規定的時間內,不詢問伺服器強制使用瀏覽器快取,時間的設定是根據響應頭的expires欄位和cache-control欄位,expires的值是乙個絕對時間,在這個時間之前,瀏覽器都會使用強快取,這個方法的缺點就是如果客戶端和服務端時間不同步,會出現是用不了快取的情況,cache-control這個欄位是http1.1出的,它的值是乙個相對時間,在這個相對時間之內都是用強快取,這個彌補了expires的缺點,不管客戶端時間正不正確,都能在有效時間內使用強快取。另外一種就是協商快取,瀏覽器會帶著last-modified:記錄資源最後修改的時間、etag:會基於資源的內容編碼生成一串唯一的標識字串,只要內容不同,就會生成不同的etag,字段詢問伺服器是否使用快取,伺服器根據傳來的if-modified-since時間來判斷是否需要使用快取。

快取和cache、localstorage本地儲存什麼的沒有關係,瀏覽器快取是存檔案的,前兩個是存少量資料供本地使用方便的。

last-modified有以下兩個缺點(etag解決了這些問題):

快取 瀏覽器快取

瀏覽器快取 brower caching 是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件 1 瀏覽器第一次請求時,會發出一組 http 頭,用來指導瀏覽器如何進行快取。伺服器規定乙個資源是否要進行快取,主要由響應頭中的expires...

瀏覽器快取

1.為什麼使用瀏覽器快取 以前了解的動態指令碼加速,或者動態內容快取之類,他們的原理都是避免伺服器重複計算,結果仍保留在伺服器端,這樣獲取資料還得從伺服器檢索然後傳送到使用者瀏覽器,如果我們把這些結果放在瀏覽器中,就省去了伺服器的查詢和網路傳輸,瀏覽器快取很好的實現了這個功能 2.瀏覽器快取存放在哪...

瀏覽器快取

瀏覽器快取知識歸納 瀏覽器快取是提公升網頁效能的一大利器,但是,也是一把雙刃劍。利用的好網頁的效能會有大幅度提公升,伺服器的壓力也會減小。利用的不好,也會遇到很多的問題。本文結合瀏覽器快取的知識,結合真實案例進行分析,希望對讀者有所幫助。瀏覽器快取分類 瀏覽器快取分為強快取和協商快取,瀏覽器載入乙個...