瀏覽器快取相關的字段

2021-08-09 09:18:24 字數 2379 閱讀 8115

last-modified:伺服器上檔案的最後修改時間

etag:檔案標識

expires:本地快取目錄中,檔案過期的時間(由伺服器指定具體的時間)

cache-control:本地快取目錄中,檔案過期的時間(由伺服器指定過期的間隔時間,由於瀏覽器根據間隔生成具體的時間)

新增expires或cache-control到報文頭中。

配置etags

讓ajax可快取

如何讓瀏覽器快取我們的靜態資源,這也是乙個需要由伺服器和瀏覽器共同協作完成的事情。post、delete、put這類帶行為性的請求操作一般不做任何快取,大多數快取只應用在get請求中。

簡單來講,本地沒有檔案時,瀏覽器必然會請求伺服器端的內容,並將這部分內容放置在本地的某個快取目錄中。在第二次請求時,它將對本地檔案進行檢查,如果不能確定這份本地檔案是否可以直接使用,它將會發起一次條件請求。所謂條件請求,就是在普通的get請求報文中,附帶if-modified-since欄位,如下所示:

if

-modified

-since:sun,03 feb 2013

06:01:12 gmt

它將詢問伺服器端是否有更新的版本,本地檔案的最後修改時間。如果伺服器端沒有新的版本,只需響應乙個304狀態碼,客戶端就是用本地版本。如果客戶端有新的版本,就將新的內容傳送給客戶端,客戶端放棄本地版本。

這裡的條件請求採用時間戳的方式實現,但是時間戳有一定的缺陷存在。

為此http1.1中引入了etag來解決這個問題。etag由伺服器端生成,伺服器端可以決定它的生成規則。

與if-modified-since/last-modified不同的是,etag的請求和響應是if-none-match/etag.

儘管條件請求可以在檔案內容沒有修改的情況下節省頻寬,但是它依然會發起乙個http請求,使得客戶端依然會花一定時間來等待響應。可見最好的方案就是連條件請求都不用發起。那麼如何讓瀏覽器知曉是否能直接使用本地版本呢?答案就是伺服器端在響應內容時,讓瀏覽器明確地將內容快取起來。即在響應裡設定expires或cache-control頭,瀏覽器將根據該值進行快取。

http1.0時,在伺服器端設定expires可以告知瀏覽器要快取檔案內容。expires是乙個gmt格式的時間字串,瀏覽器在接到這個過期值後,只要本地還存在這個快取檔案,

在到期時間之前它都不會再發起請求。

但是expires的缺陷是瀏覽器和伺服器之間的時間可能不一致,這可能會帶來一些問題,比如檔案提前過期,或者到期後並沒有刪除。在這種情況下,cache-control以更豐富的形式,實現相同的功能。

cache-control比expires優秀的地方在於,cache-control能夠避免瀏覽器端和伺服器端時間不同步帶來的不一致性問題,只要進行類似倒計時的方式計算過期時間即可。除此之外,cache-control的值還能設定public、private、no-cache、no-store等能夠更精細地控制快取的選項。

由於在http1.0時還不支援max-age,如今的伺服器在模組的支援下多半同時對expires和cache-control進行支援。在瀏覽器中如果兩個值同時存在,且被同時支援時,max-age會覆蓋expires

在瀏覽器第一次請求某乙個url時,伺服器端的返回狀態會是200,內容是客戶端請求的資源,同時有乙個last-modified的屬性標記此檔案在伺服器端最後被修改的時間

last-modified格式類似這樣:

last-modified : fri , 12 may 2006 18:53

:33gmt

客戶端第二次請求此url時,根據http協議的規定,瀏覽器會向伺服器傳送if-modified-since報頭,詢問該時間之後檔案是否有被修改過:

if

-modified

-since : fri , 12 may 2006

18:53:33 gmt

如果伺服器端的資源沒有變化,則自動返回 http 304(not changed.)狀態碼,內容為空,這樣就節省了傳輸資料量。當伺服器端**發生改變或者重啟伺服器時,則重新發出資源,返回和第一次請求時類似。從而保證不向客戶端重**出資源,也保證當伺服器有變化時,客戶端能夠得到最新的資源。

例子參考:

快取 瀏覽器快取

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

瀏覽器快取

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

瀏覽器快取

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