http cache瀏覽器快取

2022-09-12 11:03:24 字數 1544 閱讀 6528

摘至知乎

本地快取是指瀏覽器請求資源時命中了瀏覽器本地的快取資源,瀏覽器並不會傳送真正的請求給伺服器了。它的執行過程是:

cache-control是htpp快取策略中最重要的頭,它是http/1.1**現的,它由如下幾個值

public:可以被所有的使用者快取,包括終端使用者和cdn等中間**伺服器。

private:只能被終端使用者的瀏覽器快取,不允許cdn等中繼快取伺服器對其快取。

max-age:從當前請求開始,允許獲取的響應被重用的最長時間(秒)。

例如:

cache-control: public, max-age=1000 

# 表示資源可以被所有使用者以及**伺服器快取,最長時間為1000秒。

expires是http/1.0出現的頭資訊,同樣是用於決定本地快取策略的頭,它是乙個絕對時間,時間格式是如mon, 10 jun 2015 21:31:12 gmt,只要傳送請求時間是在expires之前,那麼本地快取始終有效,否則就會去伺服器傳送請求獲取新的資源。如果同時出現cache-control:max-age和expires,那麼max-age優先順序更高。他們可以這樣組合使用

cache-control: public

expires: wed, jan 10 2018 00:27:04 gmt

當第一次請求時伺服器返回的響應頭中存在以下情況時

第一次請求返回的響應頭:

cache-control:max-age=3600

expires: fri, jan 12 2018 00:27:04 gmt

last-modified: wed, jan 10 2018 00:27:04 gmt

第二次請求的請求頭資訊:

if-modified-since: wed, jan 10 2018 00:27:04 gmt
這組頭資訊是基於資源的修改時間來判斷資源有沒有更新,另一種方式就是根據資源的內容來判斷,就是接下來要討論的 etag 與 if-none-match

etag/if-none-match與last-modified/if-modified-since的流程其實是類似的,唯一的區別是它基於資源的內容的摘要資訊(比如md5 hash)來判斷

瀏覽器傳送第二次請求時,會把第一次的響應頭資訊etag的值放在if-none-match的請求頭中傳送到伺服器,與最新的資源的摘要資訊對比,如果相等,取瀏覽器快取,否則內容有更新,最新的資源連同最新的摘要資訊返回。用etag的好處是如果因為某種原因到時資源的修改時間沒改變,那麼用etag就能區分資源是不是有被更新。

第一次請求返回的響應頭:

cache-control: public, max-age=31536000

etag: "15f0fff99ed5aae4edffdd6496d7131f"

第二次請求的請求頭資訊:

if-none-match: "15f0fff99ed5aae4edffdd6496d7131f"`

快取 瀏覽器快取

瀏覽器快取 brower caching 是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件 1 瀏覽器第一次請求時,會發出一組 http 頭,用來指導瀏覽器如何進行快取。伺服器規定乙個資源是否要進行快取,主要由響應頭中的expires...

瀏覽器快取

1.為什麼使用瀏覽器快取 以前了解的動態指令碼加速,或者動態內容快取之類,他們的原理都是避免伺服器重複計算,結果仍保留在伺服器端,這樣獲取資料還得從伺服器檢索然後傳送到使用者瀏覽器,如果我們把這些結果放在瀏覽器中,就省去了伺服器的查詢和網路傳輸,瀏覽器快取很好的實現了這個功能 2.瀏覽器快取存放在哪...

瀏覽器快取

瀏覽器快取知識歸納 瀏覽器快取是提公升網頁效能的一大利器,但是,也是一把雙刃劍。利用的好網頁的效能會有大幅度提公升,伺服器的壓力也會減小。利用的不好,也會遇到很多的問題。本文結合瀏覽器快取的知識,結合真實案例進行分析,希望對讀者有所幫助。瀏覽器快取分類 瀏覽器快取分為強快取和協商快取,瀏覽器載入乙個...