強(qiáng)緩存和協(xié)商緩存

1.緩存的好處

減少了不必要的網(wǎng)絡(luò)請(qǐng)求次數(shù),減輕了服務(wù)器的壓力,加快了瀏覽器打開網(wǎng)頁(yè)的速度;

2.強(qiáng)緩存和協(xié)商緩存策略的區(qū)別

強(qiáng)緩存:瀏覽器不會(huì)向服務(wù)器發(fā)送請(qǐng)求,直接根據(jù)max-age和Expires首部字段判斷是否使用本地緩存;

協(xié)商緩存:瀏覽器會(huì)向服務(wù)器發(fā)送請(qǐng)求,請(qǐng)求攜帶首部字段If-None-match和If-Modified-Since,和請(qǐng)求資源的ETag和Last-Modified字段比較,根據(jù)結(jié)果判斷是否使用本地緩存;

3.本地緩存分類

memory cache:內(nèi)存緩存,一般腳本,圖片,字體會(huì)緩存在內(nèi)存中;

disk cache:硬盤緩存,一般非腳本文件(如css文件)會(huì)緩存在硬盤中;

4.瀏覽器緩存的詳細(xì)過程

1.瀏覽器第一次加載資源文件,會(huì)將服務(wù)器返回的資源文件和響應(yīng)首部字段一并緩存下來(lái);

2.瀏覽器下一次請(qǐng)求該資源文件的時(shí)候,先比較當(dāng)前時(shí)間和上一次響應(yīng)的時(shí)間差是否小于Cache-Control字段的max-age值,如果小于則命中強(qiáng)緩存,直接從本地緩存加載文件;否則瀏覽器會(huì)向服務(wù)器發(fā)送攜帶If-None-match和If-Modified-Since首部字段的請(qǐng)求(如果瀏覽器不支持http1.1會(huì)用Expires進(jìn)行判斷);

3.服務(wù)器接收到請(qǐng)求后,會(huì)比較資源文件的ETag和請(qǐng)求首部字段If-None-match,不一致則表示資源文件有改動(dòng),返回新的資源文件和ETag,一致則進(jìn)入下一步;

4.比較資源文件的Last-Modified和請(qǐng)求首部字段If-Modified-Since,不一致則表示資源文件有改動(dòng),返回新的資源文件和Last-Modified,一致則命中協(xié)商緩存,返回403 Not Modified,瀏覽器從本地緩存加載文件;

5.ETag和Last-Modified區(qū)別

1.ETag根據(jù)資源文件的內(nèi)容記錄了資源文件的每一次改動(dòng),Last-Modified記錄了資源文件上一次改動(dòng)的時(shí)間,精確度為秒;

2.服務(wù)器校驗(yàn)時(shí)ETag的優(yōu)先級(jí)高于Last-Modified,但是ETag更加耗費(fèi)服務(wù)器性能;

6.用戶行為對(duì)于瀏覽器緩存的影響

點(diǎn)擊頁(yè)面刷新按鈕和F5刷新:向服務(wù)器發(fā)送請(qǐng)求,會(huì)走協(xié)商緩存;

Ctrl+F5強(qiáng)制刷新:不走強(qiáng)緩存和協(xié)商緩存,服務(wù)器每次都返回最新的資源文件;

7.瀏覽器緩存流程圖

瀏覽器緩存流程圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容