來自:
瀏覽器快取機制
瀏覽器快取機制,其實主要就是http協議定義的快取機制(如: expires; cache-control等)。但是也有非http協議定義的快取機制,如使用html meta 標籤,web開發者可以在html頁面的節點中加入標籤,**如下:
上述**的作用是告訴瀏覽器當前頁面不被快取,每次訪問都需要去伺服器拉取。使用上很簡單,但只有部分瀏覽器可以支援,而且所有快取**伺服器都不支援,因為**不解析html內容本身。
下面我主要介紹http協議定義的快取機制。
expires是web伺服器響應訊息頭欄位,在響應http請求時告訴瀏覽器在過期時間前瀏覽器可以直接從瀏覽器緩訪問資料,而無需再次請求。
下面是寶寶pk專案中,瀏覽器拉取jquery.js web伺服器的響應頭:
注:date頭域表示訊息傳送的時間,時間的描述格式由rfc822定義。例如,date: mon,31 dec 2001 04:25:57gmt。
web伺服器告訴瀏覽器在2012-11-28 03:30:01這個時間點之前,可以使用快取檔案。傳送請求的時間是2012-11-28 03:25:01,即快取5分鐘。
不過expires 是http 1.0的東西,現在預設瀏覽器均預設使用http 1.1,所以它的作用基本忽略。
cache-control與expires的作用一致,都是指明當前資源的有效期,控制瀏覽器是否直接從瀏覽器緩訪問資料還是重新發請求到伺服器取資料。只不過cache-control的選擇更多,設定更細緻,如果同時設定的話,其優先順序高於expires。
http協議頭cache-control:
值可以是public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age
各個訊息中的指令含義如下:
public指示響應可被任何快取區快取。
private指示對於單個使用者的整個或部分響應訊息,不能被共享快取處理。這允許伺服器僅僅描述當使用者的部分響應訊息,此響應訊息對於其他使用者的請求無效。
no-cache指示請求或響應訊息不能快取
no-store用於防止重要的資訊被無意的發布。在請求訊息中傳送將使得請求和響應訊息都不使用快取。
max-age指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應。
min-fresh指示客戶機可以接收響應時間小於當前時間加上指定時間的響應。
max-stale指示客戶機可以接收超出超時期間的響應訊息。如果指定max-stale訊息的值,那麼客戶機可以接收超出超時期指定值之內的響應訊息。
還是上面那個請求,web伺服器返回的cache-control頭的值為max-age=300,即5分鐘(和上面的expires時間一致,這個不是必須的)。
last-modified/if-modified-since要配合cache-control使用。
etag/if-none-match也要配合cache-control使用。
你可能會覺得使用last-modified已經足以讓瀏覽器知道本地的快取副本是否足夠新,為什麼還需要etag(實體標識)呢?http1.1中etag的出現主要是為了解決幾個last-modified比較難解決的問題:
etag是伺服器自動生成或者由開發者生成的對應資源在伺服器端的唯一識別符號,能夠更加準確的控制快取。last-modified與etag是可以一起使用的,伺服器會優先驗證etag,一致的情況下,才會繼續比對last-modified,最後才決定是否返回304。
瀏覽器快取行為還有使用者的行為有關!!!
使用者操作
expires/cache-control
last-modified/etag
位址列回車
有效有效
頁面鏈結跳轉
有效有效
新開視窗
有效有效
前進、後退
有效有效
f5重新整理
無效有效
ctrl+f5重新整理
無效無效
瀏覽器第一次請求:
瀏覽器再次請求時:
瀏覽器HTTP快取機制
介紹http快取之前先簡單說一下web快取 web快取是一種儲存web資源副本並在下次請求時直接使用該副本的技術。web快取可以分為這幾種 瀏覽器快取 cdn快取 伺服器快取 資料庫資料快取 因為可能會直接使用副本免於重新傳送請求或者僅僅確認資源沒變無需重新傳輸資源實體,web快取可以減少延遲加快網...
瀏覽器快取機制 http快取頭
重用已獲取的資源能夠有效的提公升 與應用的效能。web 快取能夠減少延遲與網路阻塞,進而減少顯示某個資源所用的時間。借助 http 快取,web 站點變得更具有響應性。快取作為加快頁面載入速度的方法,可以說是必不可少的乙個方法,如何能更好地運用快取來服務客戶,首先我們就得了解清楚快取 先上一張從se...
瀏覽器http的快取機制
頁面每次重新整理都是200,解決304快取 當瀏覽器請求過一遍資源,並且資源內容未變 主要也是last modifiled 我們先來瞅一眼rfc2616規定的47種http報文首部欄位中與快取相關的字段,事先了解一下能讓咱在心裡有個底 通用首部字段 就是請求報文和響應報文都能用上的字段 cache ...