HTTP快取筆記(1)

2021-09-24 06:45:49 字數 1376 閱讀 2031

筆記來自:mdn

主要有兩種,私有快取(private caches)或者共享快取(shared caches)。

快取示意圖

快取控制頭cache-control header

cache-control: no-store,

cache-control: no-cache, no-store, must-revalidate

複製**

每次請求發出時,快取會將此請求傳送到伺服器,該請求會帶有與本地快取相關的驗證字段,伺服器端會根據驗證資訊判斷是否使用本地快取。

cache-control: no-cache

複製**

"public" 指令表示該響應可以被任何中間人(譯者注:比如中間**、cdn等)快取。若指定了"public",則一些通常不被中間人快取的頁面(譯者注:因為預設是private)(比如 帶有http驗證資訊(帳號密碼)的頁面 或 某些特定影響狀態碼的頁面),將會被其快取。

而 "private" 則表示該響應是專用於某單個使用者的,中間人不能快取此響應,該響應只能應用於瀏覽器私有快取中。

cache-control: private

cache-control: public

複製**

max-age=, 表明這個快取相對於上次請求的時間間隔內是可以繼續使用的,否則就應該失效。

cache-control: max-age=31536000

複製**

當使用must-revalidate時,表示在使用快取前必須驗證舊資源是否過期了。詳情

cache-control: must-revalidate

複製**

一旦資源被儲存在快取中,理論上應該一直儲存著,但是由於快取的空間是有限的,所以會週期性的移除一些已被快取的資源,這個過程被稱為快取清除(cache eviction)。並且伺服器上的資源可能已經更新了,所以cache也應該被更新。由於http是乙個client-server協議,當資源改變時伺服器無法通知cache和client;它們只能通過過期機制(expiration),在沒過期之前,這個資源是新的(fresh);過期後資源是stale(陳舊)狀態。清除演算法優先清理舊資源,但是實際上舊資源不是被清除演算法清除的,當快取系統收到乙個對舊資源的請求時,它會將這個request帶上if-none-match欄位去檢查這個資源到底是新的還是舊的。如果是fresh狀態,則返回304(not midified)header,並且response body不會包含請求的資源,這樣的話還可以節省一些頻寬。

下面是典型的快取處理過程:

HTTP學習筆記(一) HTTP快取機制

快取在應用開發中是乙個很重要的環節,利用好快取能夠有效地提公升使用者的體驗,加快使用者對資源的獲取效率。在http中,http定義了一套快取機制來指導客戶端對於資源的快取模式。在http中,快取的方式分為兩種 強快取和協商快取。他們的區別在於強快取不會向伺服器發起請求,只要快取資源沒有過期,就會直接...

學習筆記 http快取機制

快取機制 快取校驗 對比快取 快取判斷優先順序 示例總結 參考資料 不請求網路資源,資源在記憶體當中,一般字型 會存在記憶體當中 不訪問伺服器,直接讀快取,從記憶體中讀取快取。此時的資料時快取到記憶體中的,當kill程序後,也就是瀏覽器關閉以後,資料將不存在。statuscode 200 不請求網路...

HTTP學習筆記1

1.http是超文字傳輸協議 2.web的內容都是存在伺服器上的,web伺服器使用的是http協議 3.瀏覽器向伺服器傳送請求,伺服器就會去找所期望的物件成功就返回一系列資訊 4.所有型別的內容 都是資源,搜尋引擎也是一種資源 5.英特網資料型別有上千種,http給每種要通過web傳輸的物件都打上名...