瀏覽器在請求已經訪問過的url時,會判斷是否使用快取,而瀏覽器的快取控制分為強快取和協商快取;協商快取必須配合強快取使用。
瀏覽器的第一次快取:
首先瀏覽器第一次跟伺服器請求乙個資源,伺服器在返回這個資源和response header的同時,會根據開發者要求或者瀏覽器預設,在response的header加上相關的http response header。
瀏覽器再次請求時
一、當瀏覽器對 某個資源的請求命中了強快取時,利用expire或cache-control這兩個http response header實現:
1:expire:描述的是乙個絕對時間,根據的是客戶端的時間。用gmt格式的字串表示,如:expires:mon,10 dec 1999 02:25:22gmt,下次瀏覽器再請求同乙個資源時,先從客戶端快取中尋找,找到這個資源後,拿出它的expire跟當前的請求時間比較,如果請求時間在expire指定的失效時間之前,就能命中快取,這樣就不用再次到伺服器上去快取一遍,節約了資源,但正是因為 是絕對時間,如果客戶端時間被隨意更改一下,這個機制就失效了
所以我們需要cache-control:
2、cache-control描述的是乙個相對時間,在進行命中快取時,都是利用瀏覽器時間判斷,這兩個header可以只啟用乙個,也可以同時啟用,當response header中同時存在兩者時,cache-control優先順序高於expire
二、當瀏覽器對某個資源的請求沒有命中強快取,就會發乙個請求到伺服器,驗證協商快取是否命中。如果命中,則還是從客戶端載入,協商快取利用的是last-modified,if-mondified-since和etag、if-none-match這兩對header來管理
1.last-modified:原理和expire相同,區別是它根據伺服器的時間返回的header來判斷快取是否存在,但是有時候也會伺服器上資源有變化,但是最後修改時間卻沒有變化的情況,這時候需要etag
2、etag、if-none-match:原理上也是一樣,區別是瀏覽器跟伺服器請求同乙個資源,伺服器在返回同乙個資源的同時,在response的header加上etag的header,這個header是伺服器根據當前請求的資源生成的乙個唯一標識,這個唯一標識就是乙個字串,只有資源有變化,這個字串就不相同。
瀏覽器快取控制
瀏覽器快取控制 last modified if modified since validation 在瀏覽器第一次請求某乙個url時,伺服器端的返回狀態碼200,內容是客戶端請求的資源,同時有乙個last modified的屬性標記此檔案在伺服器端最後被修改的時間。客戶端第二次請求此url時,根據...
瀏覽器快取控制 nginx的expires設定
對於 的,尤其是新聞站,一旦發布,改動的可能是非常小的.我們希望 能否在使用者訪問一次後,快取在使用者的瀏覽器端,且時間比較長的快取.可以,用到 nginx的expires設定 nginx中設定過期時間,非常簡單,在location或if段裡,來寫.time 預設單位 s expires 30s 快...
快取 瀏覽器快取
瀏覽器快取 brower caching 是瀏覽器在本地磁碟對使用者最近請求過的文件進行儲存,當訪問者再次訪問同一頁面時,瀏覽器就可以直接從本地磁碟載入文件 1 瀏覽器第一次請求時,會發出一組 http 頭,用來指導瀏覽器如何進行快取。伺服器規定乙個資源是否要進行快取,主要由響應頭中的expires...