瀏覽器快取問題,接上篇

2022-02-25 12:06:27 字數 1527 閱讀 5433

規則

訊息包頭

值/示例

型別作用

新鮮度pragma

no-cache

響應告訴瀏覽器忽略資源的快取副本,每次訪問都需要去伺服器拉取【http1.0中存在的字段,在http1.1已被拋棄,使用cache-control替代,但為了做http協議的向下相容,很多**依舊會帶上這個字段】

expires

mon,15aug201603:56:47gmt

響應啟用快取和定義快取時間。告訴瀏覽器資源快取過期時間,如果還沒過該時間點則不發請求【http1.0中存在的字段,該字段所定義的快取時間是相對伺服器上的時間而言的,如果客戶端上的時間跟伺服器上的時間不一致(特別是使用者修改了自己電腦的系統時間),那快取時間可能就沒啥意義了。在http1.1版開始,使用cache-control:max-age=秒替代】

cache-control

no-cache

響應告訴瀏覽器忽略資源的快取副本,強制每次請求直接傳送給伺服器,拉取資源,但不是「不快取」

no-store

響應強制快取在任何情況下都不要保留任何副本

max-age=[秒]

響應指明快取副本的有效時長,從請求時間開始到過期時間之間的秒數

public

響應任何路徑的快取者(本地快取、**伺服器),可以無條件的快取改資源

private

響應只針對單個使用者或者實體(不同使用者、視窗)快取資源

last-modified

mon,15aug201603:56:47gmt

響應告訴瀏覽器這個資源最後的修改時間。伺服器將資源傳遞給客戶端時,會將資源最後更改的時間以「last-modified:gmt」的形式加在實體首部上一起返回給客戶端【只能精確到秒級,如果某些檔案在1秒鐘以內,被修改多次的話,它將不能準確標註檔案的修改時間】

if-modified-since

mon,15aug201603:56:47gmt

請求其值為上次響應頭的last-modified值,再次向web伺服器請求時帶上頭if-modified-since。web伺服器收到請求後發現有頭if-modified-since則與被請求資源的最後修改時間進行比對。若最後修改時間較新,說明資源又被改動過,則響應整片資源內容(寫在響應訊息包體內),包括更新last-modified的值,http200;若最後修改時間較舊,說明資源無新修改,則響應http304(無需包體,節省瀏覽),告知瀏覽器繼續使用所儲存的cache

校驗值etag

"fd56273325a2114818df4f29a628226d"

響應告訴瀏覽器當前資源在伺服器的唯一識別符號(生成規則又伺服器決定)

if-none-match

"fd56273325a2114818df4f29a628226d"

請求當資源過期時(使用cache-control標識的max-age),發現資源具有etage宣告,則再次向web伺服器請求時帶上頭if-none-match(etag的值)。web伺服器收到請求後發現有頭if-none-match則與被請求資源的相應校驗串進行比對,決定返回200或304

瀏覽器快取問題

測試環境 chrome v56.0.2924.87 iis7.5 測試結果 借助chrome開發者工具 瀏覽器的快取行為 快取控制 瀏覽器動作 檔案型別 字尾快取行為 無位址列訪問 f5 重新整理按鈕 location.href document html 無script js短 styleshee...

瀏覽器快取 問題

第一種 expires wed,29 may 2019 11 35 28 gmt 第二種cache control max age 31104000 max age 使用秒來計量,如 cache control max age 645672 指定頁面645672秒 7.47天 後過期。第三種 las...

ajax瀏覽器快取問題

我們都知道ajax能提高頁面載入的速度主要的原因是通過ajax減少了重複資料的載入,也就是說在載入數 據的同時將資料 快取到 記憶體中,一旦資料被載入其中,只要我們沒有重新整理頁面,這些資料就會一直被快取在內 存中,當我們提交 的url與歷 史的url一致 時,就不需要提交給伺服器,也就是不需要從伺...