2019-10-17 seo達(dá)人
一、緩存簡(jiǎn)介
緩存無(wú)處不在,瀏覽器端的緩存、服務(wù)器端的緩存、代理服務(wù)器的緩存、對(duì)象緩存、數(shù)據(jù)庫(kù)也有緩存……HTTP中具有緩存功能的是瀏覽器緩存和代理服務(wù)器緩存。下面說(shuō)一下緩存的優(yōu)點(diǎn):
1.減少冗余的數(shù)據(jù)傳輸,節(jié)省了傳輸時(shí)間
2.減少服務(wù)器的負(fù)擔(dān),大大提高了網(wǎng)站的性能
3.加快了客戶端加載網(wǎng)頁(yè)的速度
二、使用Fiddler如何查看緩存的Header
與緩存相關(guān)的內(nèi)容放在Header中的Cache項(xiàng)里;Requests和Responses均是這樣。如圖:
三、緩存的新鮮度(通過(guò)什么方式判斷其是否,如何刷新緩存)
Web服務(wù)器通過(guò)兩種方式判斷瀏覽器緩存是否:
(1)瀏覽器把緩存文件的最后修改時(shí)間通過(guò)Header“If-Modified-Since”項(xiàng)傳遞給Web服務(wù)器。
(2)瀏覽器把緩存文件的ETag通過(guò)Header“If-None-Match”項(xiàng)傳遞給Web服務(wù)器。
簡(jiǎn)單描述一下,瀏覽器端想請(qǐng)求一個(gè)文檔,它首先檢查本地緩存,發(fā)現(xiàn)存在這個(gè)文檔的緩存,獲取緩存文檔的最后修改時(shí)間,發(fā)送請(qǐng)求,將值放在Header中的“If-Modified-Since”項(xiàng)傳遞給Web服務(wù)器。Web服務(wù)器接收到請(qǐng)求后,將服務(wù)器的文檔修改時(shí)間(Last-Modified)與HTTP請(qǐng)求中的header中的“If-Modified-Since”值相比較,有兩種情況,如下面圖示:
1.緩存有效:
2.緩存無(wú)效:
截圖舉例:
上面說(shuō)的是If-Modified-Since值對(duì)比的方式;下面說(shuō)一下ETa'g;
四、ETag
ETag(Entity Tag):實(shí)體標(biāo)簽;是根據(jù)實(shí)體內(nèi)容生成的一段hash字符串(類似MD5之后的結(jié)果),可以用來(lái)標(biāo)識(shí)資源的狀態(tài)(當(dāng)資源發(fā)送變化時(shí),ETag也會(huì)跟著改變);ETag是Web服務(wù)端產(chǎn)生的,然后通過(guò)response響應(yīng)給瀏覽器。使用ETag,主要解決Last-Modified無(wú)法解決的情況:
(1.某些服務(wù)器不能得到文件的If-Modified-Since來(lái)判斷文件是否更新;
(2.某些文件修改非常頻繁,以小于秒的單元進(jìn)行修改,而Last-Modified最單元為秒;
(3.有些文件最后修改時(shí)間變化了,但是內(nèi)容并沒(méi)有變化,所以我們不希望瀏覽器以為文件已變化了;
五、與緩存相關(guān)的header
字段名稱 釋義
Cache-Control:max-age=0 以秒為單位
If-Modified-Since:Fri, 11 Jan 2019 01:55:04 GMT 緩存文件的最后修改時(shí)間
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 絕對(duì)禁止緩存(機(jī)密、敏感文件)
Cache-Control:max-age=60 60秒后緩存過(guò)期(相對(duì)時(shí)間)
Date:Fri, 11 Jan 2019 01:55:04 GMT 當(dāng)前發(fā)送時(shí)間
Expires:Fri, 11 Jan 2019 01:55:04 GMT 緩存過(guò)期時(shí)間設(shè)置(絕對(duì)時(shí)間)
Last-Modified:Fri, 11 Jan 2019 01:55:04 GMT 服務(wù)器端文件的最后修改時(shí)間
Etag:W/"5c37f778-732" 服務(wù)器端文件的Etag值
六、關(guān)于緩存的常識(shí)
1.如何讓瀏覽器不使用緩存?
答:【Ctrl+F5】快捷鍵強(qiáng)制刷新瀏覽器,讓瀏覽器不使用緩存;此時(shí)Fiddler抓包所看到的請(qǐng)求Header中都會(huì)帶有Cache-Control:no-cache;
2.如何讓瀏覽器直接使用緩存,不請(qǐng)求服務(wù)器進(jìn)行緩存驗(yàn)證?
答:第一次訪問(wèn)與第二次訪問(wèn)同一個(gè)網(wǎng)頁(yè);(注意:第二次訪問(wèn)時(shí),輸入網(wǎng)址,直接回車)瀏覽器會(huì)直接使用有效的緩存,而不會(huì)發(fā)生HTTP請(qǐng)求去服務(wù)器驗(yàn)證緩存,這種情況稱之為緩存命中;
使用Fiddler抓包,現(xiàn)象:第一次訪問(wèn),有70多個(gè)Session;第二次訪問(wèn),僅40多個(gè)請(qǐng)求;
3.瀏覽器均可在設(shè)置中設(shè)置不使用緩存;
4.公有緩存、私有緩存的區(qū)別:一個(gè)可以多個(gè)不同的客戶端使用,一個(gè)只可唯一的客戶端使用;
藍(lán)藍(lán)設(shè)計(jì)( www.wnxcall.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)。
藍(lán)藍(lán)設(shè)計(jì)的小編 http://www.wnxcall.com