瀏覽器緩存詳細記錄

實現瀏覽器緩存主要有四種方式:

1)使用Cache-Control或者Expires

2)使用Last-Modified 和 If-Modified-Since

3)使用Etag和If-None-Match

4)使用html5中appcache

下面以nginx服務器為例,記錄緩存的四種方式

強制緩存:不發送請求,使用瀏覽器緩存

在http1.0中,使用Pragma?和Expires作為緩存標識,其中Expires為服務器端返回的過期時間,該用法的一個缺點是客戶端時間和服務端時間可能不一致,所以,在http1.1版本中,資源是否過期使用Cache-Control來判斷,在nginx 禁用緩存的情況下,cache-control的取值為max-age=0,代表每次請求都必須從服務端獲取資源。

當設置了max-age=3600后,瀏覽器在緩存有效范圍內會直接讀取緩存,而不是請求服務端,返回的狀態碼依然是200

對比緩存:需要與服務端進行比對判斷是否需要緩存

Last-Modified 和If-Modified-Since 大致流程如下

瀏覽器第一次返送請求,服務端返回帶有Last-Modified響應頭,當瀏覽器再次請求該資源時,發送請求帶上If-Modified-Since ,服務端收到帶有If-Modified-Since請求頭是,則與被請求資源的最后修改時間作對比,若發現資源的最后修改時間大于If-Modified-Since,則返回200,若小于If-Modified-Since,則返回304代表使用瀏覽器緩存即可。


Etag??/??If-None-Match?

Etag/If-None-Math的優先級比Last-Modified/If-Modified-Since高,其中Etag是服務器根據一定規則生成的資源的唯一標識,返回給客戶端,服務端收到If-None-Math的請求頭時,則與被請求資源的唯一標識作對比,不同則返回200,相同,則返回304

HTML5中的appcache

appcache 是html5加入的緩存方案,也是不需要請求服務端的緩存。使用步驟:

1)創建appcache文件,如app.manifest,文件內容有三欄,CACHE MANIFEST(必選)為需要緩存的文件。NETWORK(可選)是繞過緩存直接請求服務端的文件,FALLBACK(可選)為一個備用文件。實例:

CACHE MANIFEST

hello.html

demo.js

NETWORK:

*

FALLBACK:

*

entry.html文件中在html標簽中加入manifest="app.manifest",示例


清空緩存,重新刷新頁面,console控制臺開始創建緩存文件


在第二次刷新時,瀏覽器直接使用緩存

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容