瀏覽器的快取機制

2021-08-20 13:04:07 字數 1778 閱讀 9317

快取對訪問資源時的速度提公升有著重要的作用

快取的概念,在計算機組成原理中用到過,一種硬體:cache

在瀏覽器訪問伺服器資源的過程中,也經常用到快取機制。

整個快取機制有幾個階段:本地快取,協商快取,頁面快取。

本地快取階段:

就是檢查本地快取檔案中是否有要訪問的頁面資源《不同瀏覽器有不同檢查本地檔案的方式》

若無快取:那肯定會傳送請求到伺服器,然後得到資源。

若有快取:那肯定直接取自己的,減少訪問時間,快速得到資源。但是在拿到這個資源的時候,會有個問題,資源是不是最新的內容。

《判斷是否過期》那如何判斷呢?在快取的響應檔案裡,有乙個關鍵字:expires。這個表示這個檔案的過期時間。ps:既然有本地快取,那肯定是訪問過該資源的。人家伺服器比較貼心,在第一次響應中還加上了乙個檔案的保質期,讓瀏覽器再次用該快取資源時候看看保質期,防止吃過期食品。但是expires表示的是伺服器時間,萬一與客戶端時間不同怎麼辦?最新的http協議中改進了這個,增加了cache-control這個響應頭,增加了max-age欄位,來講明:超過這個時間s就會失效。優先順序比expires高》

協調快取階段:

若不過期:那就直接在本地快取中用。

若已過期:那肯定要去伺服器傳送請求,表示自己想要最新資源。但是注意這個時候,請求會帶上if-last-modified欄位,這個是什麼呢?在快取中顯示的該資源最近被修改時間。資源最近的被修改時間,瀏覽器怎麼知道的?肯定是快取資源本身帶的,在第一次的響應時,伺服器響應頭就加上了last-modified欄位,瀏覽器快取時候就儲存了這個資訊請求中的這個欄位和伺服器資源中最新的資源修改時間進行比較但是問題又來了,萬一資源確實最近又被修改了,但是內容一點點都沒變,和瀏覽器快取中的一毛一樣怎麼辦?不想再浪費時間進行傳輸了。那好http又提供了乙個新的etag欄位。該字段是資源在伺服器中的唯一標識,由檔案的索引節,檔案大小,修改時間組成,它存在於檔案的響應頭。在再次請求時,會帶上if-none-match(其內容就是etag)來進行比較伺服器資源的etag值。所以同時存在last-modified時,優先比較etag。

若etag/last-modified新:伺服器響應304,直接用瀏覽器中的快取資源。

若etag/last-modified舊:伺服器響應200,把伺服器中最新資源發過來。

說一點頁面快取:網頁文件分為3種:靜態文件,動態文件,活動文件

動態文件,是一種服務端程式,他會在接受請求的時候被執行,程式執行結果作為響應返回。

若過多次請求都一樣,那麼動態文件執行結果也一樣。那麼請求一次,伺服器就執行程式一次,這樣就會很浪費效能。

怎麼解決呢?

把一次的動態文件的結果作為一種靜態文件,儲存在伺服器快取中,每次遇到相同的請求時,就把它返回過去,沒必要再次執行。

以後再學乙個小知識點時,必須要弄懂弄透徹,能用自己的話講出來教別人,這才能算學會。

最近,在學j2ee和jvm和演算法,並且作業系統,計網,計組要複習!累啊累啊累啊!

瀏覽器快取機制

最近在準備優化日誌請求時遇到了一些令人疑惑的問題,比如為什麼響應頭里出現了兩個 cache control 為什麼明明設定了 no cache 卻還是發請求,為什麼多次訪問時有時請求裡帶了 etag,有時又沒有帶?等等。後來查了一些資料以及同事親自驗證,總算對這些問題有了個清晰的理解,現在整理出來以...

瀏覽器快取機制

當我們瀏覽乙個頁面發現有異常時,通常考慮的就是書不是瀏覽器做了快取呢,按ctrl f5重新請求一次就能請求到沒有快取的頁面,這個是為什麼呢。首先,ctrl f5組合鍵重新整理頁面,那麼瀏覽器會直接向目標url傳送請求,而不再使用瀏覽器快取的資料。其次,當請求到達伺服器端依然有可能出現使用伺服器端的資...

瀏覽器快取機制

瀏覽器快取機制 瀏覽器快取機制,其實主要就是 協議定義的快取機制 如 expires cache control 等 但是也有非 協議定義的快取機制,如使用 html meta 標籤,web 開發者可以在 html 頁面的節點中加入 標籤,如下 上述 的作用是告訴瀏覽器當前頁面不被快取,每次訪問都需...