瀏覽器快取系列之一

2022-09-06 18:30:12 字數 2607 閱讀 2107

在web效能優化上,我們總是追求網頁能快速開啟相應,這時就是瀏覽器快取上場的時間了。

概念:當瀏覽器向伺服器發起資源請求後,相應後會載入各種資源:html頁面、、js檔案、css檔案,對於一些不經常變的內容,瀏覽器會將它們快取下來,等下次再訪問的時候,就直接從客戶端載入這些資源了。 這些被瀏覽器儲存下來的資源成為快取。(注意:和cookie和localstorage是不同的概念)

強快取:http狀態碼為200 強快取就是判斷快取是否在有效期內,如果在,則直接從客戶端獲取資源,不會傳送請求向服務端。即使請求的資源已經更新。 expires是http 1.0提出的乙個表示資源過期時間的header,它描述的是乙個絕對時間,由伺服器返回,用gmt格式的字串表示,如:expires:thu, 31 dec 2037 23:55:55 gmt,包含了expires頭標籤的檔案,就說明瀏覽器對於該檔案快取具有非常大的控制權。      expires是較老的強快取管理header,由於它是伺服器返回的乙個絕對時間,在伺服器時間與客戶端時間相差較大時,快取管理容易出現問題,比如:隨意修改下客戶端時間,就能影響快取命中的結果。所以在http 1.1的時候,提出了乙個新的header,就是cache-control,這是乙個相對時間,在配置快取的時候,以秒為單位,用數值表示     cache-control描述的是乙個相對時間,在進行快取命中的時候,都是利用客戶端時間進行判斷,所以相比較expires,cache-control的快取管理更有效,安全一些。     這兩個header可以只啟用乙個,也可以同時啟用,當response header中,expires和cache-control同時存在時,cache-control優先順序高於expires。 協商快取:last-modified&etag(是否更新): 當瀏覽器對某個資源的請求沒有命中強快取,就會發乙個請求到伺服器,驗證協商快取是否命中,如果協商快取命中,請求響應返回的http狀態為304並且會顯示乙個not modified的字串

1、200 from memory cache 不訪問伺服器,直接讀快取,從記憶體中讀取快取。此時的資料時快取到記憶體中的,當kill程序後,也就是瀏覽器關閉以後,資料將不存在。但是這種方式只能快取派生資源

2、200 from disk cache 不訪問伺服器,直接讀快取,從磁碟中讀取快取,當kill程序時,資料還是存在。這種方式也只能快取派生資源

3、304 not modified 訪問伺服器,發現資料沒有更新,伺服器返回此狀態碼。然後從快取中讀取資料。

3.1、瀏覽器快取的**快取原理

訪問-> 200 -> 退出瀏覽器 再進來-> 200(from disk cache) -> 重新整理 -> 200(from memory cache)

cache-control 的引數包括:

for example:

1、cache-control: max-age=5 表示當訪問此網頁後的5秒內再次訪問不會去伺服器。

2、cache-control:max-age=3600,must-revalidate

如果cache-control 和 expires 同時設定, cache-control 優先.如果你打算使用 cache-control ,別忘記好好看看關於 http 1.1協議的文件

4.2、expires

簡要:新增expires頭能有效的利用瀏覽器的快取能力來改善頁面的效能,能在後續的頁面中有效避免很多不必要的http請求,web伺服器使用expires頭來告訴web客戶端它可以使用乙個元件的當前副本,直到指定的時間為止。例如:expires:thu,15 apr 2010 20:00:00 gmt; 他告訴瀏覽器快取有效性持續到2023年4月15日為止,在這個時間之內相同的請求使用快取,這個時間之外使用http請求。

cathe-control:max-age=315360000

expires有乙個非常大的缺陷,它使用乙個固定的時間,要求伺服器與客戶端的時鐘保持嚴格的同步,並且這一天到來後,伺服器還得重新設定新的時間。

http1.1引入了cathe-control,它使用max-age指定元件被快取多久,從請求開始在max-age時間內瀏覽器使用快取,之外的使用請求,這樣就可以消除expires的限制,

如果對瀏覽器相容性要求很高的話,可以兩個都使用。

接下來用流程圖詳細的說明: 瀏覽器初次訪問伺服器---------------伺服器返回200狀態

瀏覽器再次請求伺服器時,瀏覽器會先判斷max-age,如果到期則直接請求伺服器,否則直接從快取中取,

伺服器收到請求後,判斷檔案是否被修改過,若是則直接返回200,否則返回304,瀏覽器將從快取中獲取檔案。

若同步重新整理頁面,則瀏覽器並不會先判斷max-age,而是直接傳送請求,伺服器接收到請求後,判斷檔案是否有變化,若有則返回200,若沒有則返回304

送一張瀏覽器快取判斷流程:

快取 瀏覽器快取

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

瀏覽器快取

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

瀏覽器快取

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