配合客戶端寫的網(wǎng)頁;客戶端需求是無網(wǎng)絡的情況下要使用緩存的網(wǎng)頁;但是發(fā)現(xiàn)服務端更新完文件后并且ETag值發(fā)生了更改但是前端頁面并沒有更新;廢話不說;先走代碼;該代碼是讓客戶端在有網(wǎng)絡的情況下每次校驗服務端是否發(fā)生更改;
<meta http-equiv="Cache-control" content="no-cache,max-age=0, must-revalidate,no-store">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Cache" content="no-cache">
瀏覽器的緩存機制
- 當前緩存的文件是否過期;
- 服務器中文件是否有改動
判斷緩存過期以及文件的變動
文件變動后文件的Etag值會發(fā)生更改;客戶端先問服務器Etag值是否發(fā)生更改;然后決定是否更新當前文件;
設置過期,在請求頭中設置字段
Http1.0
-
Pragma:它用來向后兼容只支持 HTTP/1.0 協(xié)議的緩存服務器,那時候 HTTP/1.1 協(xié)議中的 Cache-Control 還沒有出來
Http1.1
- Expires:相應頭過期時間;Cache-control中設置max-age;則該屬性會被忽略
- Cache-control;該字段的優(yōu)先級要比Expires優(yōu)先級高
Cacha-control常見的取值:
no-chche:表示無論服務端有沒有設置Cache-control,都必須重新追根到源服務器進行校驗,源服務器未變化返回304;must-revalidate:告訴瀏覽器/緩存服務器;在本地文件過期之前可以使用本地文件;本地文件一旦過期需要去源服務器進行有效性校驗;如果有緩存服務器且該資源未過有效期則命中緩存服務器并返回200;如果過期切源服務器未發(fā)生更改;則教研后返回304;max-age:緩存的內容將在多少秒后失效,相對于請求時間來說的;max-age=0便是無論服務端如何設置;在重新獲取資源之前;先檢驗ETag/Last-Modified;在設置max-age=0或no-cache后;在資源無更新的情況下訪問都會返回304private:客戶端可以緩存public:客戶端和代理服務器都可緩存