瀏覽器的快取裡面有歷史記錄嗎,瀏覽器的快取裡面有歷史記錄嗎? 50

時間 2021-06-04 12:41:58

1樓:匿名使用者

如果你之前有登入的話,是不是升級之後需要在登入一次,才能看到瀏覽記錄

2樓:英雄多少無奈

什麼是快取

瀏覽器中的快取又是什麼

瀏覽器中快取的步驟是什麼樣的

我們知道瀏覽器會有快取,那麼是我們每次去開啟之前已經開啟過的**,都是用的快取嗎?當然不是!!!瀏覽器有一套協議來管理什麼時候需要去請求伺服器,什麼時候使用本地快取;這套協議就叫做快取協議(快取機制);

一起來看一下這套機制的流程是什麼樣的:

很隨意的來解釋一下這張圖:

1.瀏覽器發出請求,檢查本地是否有快取;

2.如果有快取,判斷快取是否過期;

3.如果過期,向伺服器傳送驗證當前本地資源還是否可用,如果可用,返回狀態碼304,使用本地快取。如果不可用,返回狀態碼200,並返回新資源,並把資源寫入到快取當中。

4.如果沒有過期,直接載入快取資源使用;

開啟瀏覽器開發工具= >network;可以看到如下圖:

第一個資源是請求返回的新資源。

第二個和第三個是讀取記憶體當中的資源,耗費時間為0ms。

後面幾個是讀取本地硬碟裡面的快取資源,讀取硬碟比較慢,所以有時間花銷,但總體是比請求網路快的多;

怎麼判斷是否有快取

在第一次請求頁面成功返回資源後,會記錄的每一個快取檔案與其url的對應關係,儲存在本地,下一次再請求的時候,或者瀏覽器開啟之後,通過請求資源的url去匹配是否有對應的資源;來確認這個檔案是否有快取(此處並不能確認檔案是否已經過期);

怎麼判斷命中的快取是否可用

cache-control欄位的含義

expires欄位

當兩個欄位都有的時候,會忽略掉expires欄位。

如果快取資源不可用,怎麼處理

根據配置,如果發現資源可用,終止請求,返回快取資源;發現不可用時候,回發起網路請求,在發起網路請求的時候,回去檢視是否存在etag欄位、last-modified欄位;

1.如果沒有發現相關欄位,直接發起請求,返回相關資源,寫入快取當中;

2.如果發現了etag、last-modified欄位,附帶上相應的欄位內容,發起請求,服務端會根據你發起的欄位內容做匹配,如果匹配成功,說明在客戶端的快取資源還是可用的,返回304。如果匹配失敗,服務端會返回200,並攜帶上相應的資原始檔;

那麼etag欄位和last-modified欄位又代表什麼意思呢?他們的作用又是什麼呢?

這兩個欄位是在資源返回的時候請求header頭攜帶回來的。

etag欄位:表示請求資源在伺服器的唯一標識,瀏覽器可以根據etag值快取資料,下次請求的時候以if-none-match欄位請求。

etag

last-modified欄位:用於標記請求資源的最後一次修改時間。請求的時候以if-modified-since欄位請求

last-modified

if-modified-since

全部過程解析

以下是http快取可能涉及到的所有的欄位: