六、HTTP協(xié)議中的緩存

2019-10-17    seo達(dá)人

一、緩存簡介

緩存無處不在,瀏覽器端的緩存、服務(wù)器端的緩存、代理服務(wù)器的緩存、對象緩存、數(shù)據(jù)庫也有緩存……HTTP中具有緩存功能的是瀏覽器緩存和代理服務(wù)器緩存。下面說一下緩存的優(yōu)點:



1.減少冗余的數(shù)據(jù)傳輸,節(jié)省了傳輸時間



2.減少服務(wù)器的負(fù)擔(dān),大大提高了網(wǎng)站的性能



3.加快了客戶端加載網(wǎng)頁的速度



二、使用Fiddler如何查看緩存的Header

與緩存相關(guān)的內(nèi)容放在Header中的Cache項里;Requests和Responses均是這樣。如圖:







三、緩存的新鮮度(通過什么方式判斷其是否,如何刷新緩存)

Web服務(wù)器通過兩種方式判斷瀏覽器緩存是否:



(1)瀏覽器把緩存文件的最后修改時間通過Header“If-Modified-Since”項傳遞給Web服務(wù)器。



(2)瀏覽器把緩存文件的ETag通過Header“If-None-Match”項傳遞給Web服務(wù)器。



簡單描述一下,瀏覽器端想請求一個文檔,它首先檢查本地緩存,發(fā)現(xiàn)存在這個文檔的緩存,獲取緩存文檔的最后修改時間,發(fā)送請求,將值放在Header中的“If-Modified-Since”項傳遞給Web服務(wù)器。Web服務(wù)器接收到請求后,將服務(wù)器的文檔修改時間(Last-Modified)與HTTP請求中的header中的“If-Modified-Since”值相比較,有兩種情況,如下面圖示:



1.緩存有效:







2.緩存無效:







截圖舉例:







上面說的是If-Modified-Since值對比的方式;下面說一下ETa'g;



四、ETag

ETag(Entity Tag):實體標(biāo)簽;是根據(jù)實體內(nèi)容生成的一段hash字符串(類似MD5之后的結(jié)果),可以用來標(biāo)識資源的狀態(tài)(當(dāng)資源發(fā)送變化時,ETag也會跟著改變);ETag是Web服務(wù)端產(chǎn)生的,然后通過response響應(yīng)給瀏覽器。使用ETag,主要解決Last-Modified無法解決的情況:



(1.某些服務(wù)器不能得到文件的If-Modified-Since來判斷文件是否更新;



(2.某些文件修改非常頻繁,以小于秒的單元進(jìn)行修改,而Last-Modified最單元為秒;



(3.有些文件最后修改時間變化了,但是內(nèi)容并沒有變化,所以我們不希望瀏覽器以為文件已變化了;







五、與緩存相關(guān)的header

字段名稱 釋義

Cache-Control:max-age=0 以秒為單位

If-Modified-Since:Fri, 11 Jan 2019 01:55:04 GMT 緩存文件的最后修改時間

If-None-Match:W/"5c37f778-732" 緩存文件的Etag的值

Cache-Control:no-cache 不使用緩存

Pragma:no-cache 不使用緩存

Cache-Control:public 響應(yīng)被緩存,可以共享與多用戶

Cache-Control:private 響應(yīng)只能私有緩存,不可共享

Cache-Control:no-store 絕對禁止緩存(機密、敏感文件)

Cache-Control:max-age=60 60秒后緩存過期(相對時間)

Date:Fri, 11 Jan 2019 01:55:04 GMT 當(dāng)前發(fā)送時間

Expires:Fri, 11 Jan 2019 01:55:04 GMT 緩存過期時間設(shè)置(絕對時間)

Last-Modified:Fri, 11 Jan 2019 01:55:04 GMT 服務(wù)器端文件的最后修改時間

Etag:W/"5c37f778-732" 服務(wù)器端文件的Etag值

六、關(guān)于緩存的常識

1.如何讓瀏覽器不使用緩存?



答:【Ctrl+F5】快捷鍵強制刷新瀏覽器,讓瀏覽器不使用緩存;此時Fiddler抓包所看到的請求Header中都會帶有Cache-Control:no-cache;







2.如何讓瀏覽器直接使用緩存,不請求服務(wù)器進(jìn)行緩存驗證?



答:第一次訪問與第二次訪問同一個網(wǎng)頁;(注意:第二次訪問時,輸入網(wǎng)址,直接回車)瀏覽器會直接使用有效的緩存,而不會發(fā)生HTTP請求去服務(wù)器驗證緩存,這種情況稱之為緩存命中;



使用Fiddler抓包,現(xiàn)象:第一次訪問,有70多個Session;第二次訪問,僅40多個請求;



3.瀏覽器均可在設(shè)置中設(shè)置不使用緩存;



4.公有緩存、私有緩存的區(qū)別:一個可以多個不同的客戶端使用,一個只可唯一的客戶端使用;


藍(lán)藍(lán)設(shè)計www.bouu.cn )是一家專注而深入的界面設(shè)計公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計、BS界面設(shè)計  cs界面設(shè)計 、 ipad界面設(shè)計  包裝設(shè)計 、 圖標(biāo)定制  用戶體驗 、交互設(shè)計、 網(wǎng)站建設(shè) 、平面設(shè)計服務(wù)

分享本文至:

日歷

鏈接

個人資料

存檔