瀏覽器的儲存與快取機制

2021-09-26 21:27:35 字數 3222 閱讀 9658

localstorage

sessionstorage

sessionstorage 、localstorage 之間的區別

indexeddb

cache

總結區分

瀏覽器快取機制

協商快取

根據快取機制詳解返回304的全過程

快取的資料型別都為字串,通常需將物件序列化成字串。

原理及生成方式

cookie的缺陷

cookie與session的區別與聯絡

session和cookie的區別:

session和cookie的聯絡:

手寫cookie

let cookie =

,// 獲取cookie

get:

function

(key)

}return res;

}}

通過localstorage可以將資料儲存在客戶端,並且可以通過localstorage.setitem / localstorage.getitem呼叫。

localstoreage用於將大量資料(最大5m)儲存在瀏覽器中

儲存後永久儲存,除非用js手動清除。

不參與網路傳輸一般用於優化效能,主要用於保持大量資料。

通過sessionstorage.setitem / sessionstorage.getitem呼叫。

web storage只能用來儲存字串,只能儲存較少量的資料,遇到大規模且結構複雜的資料時,需要使用indexeddb。

indexeddb用於客戶端儲存大量結構化資料。是乙個執行在瀏覽器上的非關係型資料庫。是沒有儲存上限,不僅可以儲存字串,還可以儲存二進位制資料。

在進行第一次連線時,所有資源都需要客戶端向服務端獲取。並且瀏覽器會快取一部分資源本地cache, 當再次連線時,直接從瀏覽器獲取即可。如果伺服器更新了資源,再重新獲取。怎樣判斷是否需要重新獲取?就是下文的瀏覽器快取機制的作用了。

瀏覽器每次發起請求,都會先在瀏覽器快取中查詢該請求的結果以及快取標識拿到返回的請求結果後,都會將該結果和快取標識存入瀏覽器快取中瀏覽器對於快取的處理是根據第一次請求資源時返回的響應頭來確定的。

根據快取機制的不同,分為強快取與協商快取。

不會向伺服器傳送請求,直接從快取中讀取資源

通過設定兩種 http header 實現:expirescache-control

快取過期時間,用來指定資源到期的時間,是伺服器端的具體的時間點。

cache-control 可以在請求頭或者響應頭中設定,並且可以組合使用多種指令:

區別因為強快取根據過期時間來判斷是否需要重新請求,所以會出現在有效期內,伺服器資源已經更新,但獲取到的仍是舊資源。

協商快取就是強制快取失效(可能是cache-control設定了no-cache或no-store)後,瀏覽器攜帶快取標識向伺服器發起請求由伺服器根據快取標識決定是否使用快取的過程,主要有以下兩種情況:

協商快取生效,返回304not modified

協商快取失效,返回200和請求結果

協商快取可以通過設定兩種 服務端的響應頭來實現:last-modifiedetag

last-modifiedif-modified-since(http/1.0)

瀏覽器在第一次訪問時,伺服器在響應頭中新增last-modified的header,值是這個資源的最後修改時間

瀏覽器下一次請求,檢測到有last-modified,新增if-modified-since,值就是last-modified中的值;伺服器會根據請求中if-modified-since 中的值與伺服器中這個資源的最後修改時間對比,看是否有變化。

缺陷:

etagif-none-match(http/1.1)

etag是伺服器響應請求時,返回資源的乙個唯一標識,只要資源有變化,etag就會重新生成。

具體過程:

瀏覽器在向伺服器傳送請求時,會將上一次返回的etag值放到請求頭的if-none-match裡

伺服器比較if-none-match跟伺服器上該資源的etag是否一致,匹配不上,返回200。區別

效能:etag < last-modified

優先順序:etag > last-modified

瀏覽器快取機制

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

瀏覽器快取機制

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

瀏覽器快取機制

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