web快取之 http快取機制

2022-08-30 14:06:18 字數 1321 閱讀 8270

一、web快取可以分為資料庫快取、**伺服器快取、瀏覽器快取。

二、http快取是通過頭資訊控制快取。

a. 分為強快取和協商快取兩種。

b. 強快取如果命中,則不需要和伺服器發生互動。

c. 協商快取不管是否命中,都要和伺服器發生互動。

d. 強快取的優先順序高於協商快取。

三、強快取。

a. 可以理解為無需驗證的快取策略。

b. 響應頭中有兩個欄位來表明規則expires/cache-control。

c. expires指定資源過期時間,超過這個時間點表明資源過期。是http1.0的標準。

d. cache-control是http1.1的標準,優先順序高於expires。可能的取值有:max-age, s-maxage, public, private, no-cache, no-store, mast-revalidate。

e. max-age指定資源過期時間,單位是s。在指定時間內直接使用快取,不傳送請求。

d. s-maxage作用同max-age,但僅限於共享快取,在私有快取中被忽略。

e. public表示響應既可以被**伺服器快取又能被客戶端快取。

f. private表示響應只能被客戶端快取。

g. no-cache強制所有快取了該響應的使用者,在使用已快取的資料前,傳送帶驗證器的請求到伺服器。

h. no-store禁止快取,每次請求都要向伺服器重新獲取。

i. mast-revalidate表示如果快取資源已過期則請求伺服器重新拉取。

四、協商快取。

a. 快取的資源到期了,不代表資源的內容發生了改變,如果和伺服器上的資源沒有差異,實際上沒有必要再次請求。

b. 瀏覽器第一次請求資料後會將資料和響應頭部的快取標識儲存起來,再次請求時會帶上儲存的頭部字段,伺服器端驗證是否可用。返回304代表資源沒有發生改變可以使用快取的資料,獲得新的過期時間。返回200就相當於重新請求了一遍資源並替換舊資源。

c. last-modified  /  if-modified-since: last-modified伺服器端資源的最後修改時間,響應頭部會帶上這個標識。第一次請求後瀏覽器記錄這個時間,再次請求時,請求頭部帶上

if-modified-since即之前記錄下的時間。伺服器端收到帶if-modified-since的請求後回去和資源的最後修改時間對比。相等返回304,否則返回最新資,源狀態碼200。

d. etag  /  if-none-match:原理同last-modified  /  if-modified-since,只不過etag是伺服器端生成的一段hash字串,精確度比laste-modified要高,屬於強驗證,要求資源位元組級別的一致。

Http快取機制

快取快取,就是把需要的東西存起來,不需要每次都去請求。主要目的減小伺服器壓力,放到客戶端上來講,還利於節省流量,還能流暢的把ui顯示出來,提高了使用者體驗。對於http快取來講,主要的就是校驗快取的有效性,也就是新鮮度。如果客戶端不能及時響應服務端的資料變化,快取一直不能被更新,那不就是得不償失了?...

HTTP 快取機制

基於 header的示例 content length 3534http快取策略分為 1 快取策略 cache control 頭里的 public private no cache max age no store 其中no store為不儲存,no cache 0秒的max age 2 快取過期...

http快取機制

首先需要了解http協議的響應頭中的幾個欄位的含義 cache control expires 該欄位表示資源的過期時間。etag 該欄位表示資源的唯一標識。last modified 該欄位表示資源的最後修改時間。有以下2個問題需要注意 為什麼優先校驗etag,後校驗last modified?因...