瀏覽器快取

2021-08-08 02:40:37 字數 1433 閱讀 4825

伺服器客戶端

etag

if-none-match

last-modified

if-modified-since

客戶端第一請求某個url,伺服器傳回的響應頭里有 last-modified 和 etag;

瀏覽器快取此次結果

瀏覽器第二次請求這個url,向伺服器傳送的請求頭里有 if-modified-since(裡面是上次伺服器傳回的last-modified 時間) 和 if-none-match(裡面是上次伺服器傳回的etag字串)

伺服器判斷etag是否改變 或 if-modified-since時間後檔案是否有被修改過

expires返回的到期時間是伺服器端的時間,所以可能存在客戶端時間和伺服器時間不一致。所以建議 expires和cache-control結合一起使用。

etag 主要為了解決 last-modified 無法解決的一些問題。

1. 一些檔案也許會週期性的更改,但是他的內容並不改變(僅僅改變的修改時間),這個時候我們並不希望客戶端認為這個檔案被修改了,而重新get;

2. 某些檔案修改非常頻繁,比如在秒以下的時間內進行修改,(比方說1s內修改了n次),if-modified-since能檢查到的粒度是s級的,這種修改無法判斷(或者說unix記錄mtime只能精確到秒)

3. 某些伺服器不能精確的得到檔案的最後修改時間;

分布式系統裡多台機器間的檔案的last-modified必須保持一致。盡量關閉etag(因為每台機器生成的etag不一樣)

網頁的快取是由http訊息頭中的「cache-control」來控制的,常見的取值有private、no-cache、max-age、must- revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況:

開啟新視窗

值為private、no-cache、must-revalidate,那麼開啟新視窗訪問時都會重新訪問伺服器。

而如果指定了max-age值,那麼在此值內的時間裡就不會重新訪問伺服器,例如:

cache-control: max-age=5(表示當訪問此網頁後的5 秒 內再次訪問不會去伺服器)

在位址列回車

值為private或must-revalidate則只有第一次訪問時會訪問伺服器,以 後就不再訪問。

值為no-cache,那麼每次都會訪問。

值為max-age,則在過期之前不會重複訪問。

按後退按扭

值為private、must-revalidate、max-age,則不會重訪問,

值為no-cache,則每次都重複訪問

按重新整理按扭

無論為何值,都會重複訪問

快取 瀏覽器快取

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

瀏覽器快取

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

瀏覽器快取

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