原文地址我們要學會利用瀏覽器的緩存機制來減少對服務(wù)器的訪問來豹绪,加快我們網(wǎng)頁的加載速度挑势,首先我們要先了解一下镇防,關(guān)于瀏覽器緩存的一些基本概念。
以前潮饱,面試的時候被問到這樣一道題来氧,你認為天貓的首頁是靜態(tài)的還是動態(tài)的?
這里香拉,其實就問的是啦扬,瀏覽器緩存。
1.瀏覽器在加載一個網(wǎng)頁的時候缕溉,打開控制面板的network選項考传,就可以看到加載的一個個資源文件,后面還有加載這些文件的時間证鸥,其實,有一些文件是不需要每次都去訪問服務(wù)器來勤晚,加載的枉层,比如網(wǎng)站的logo,像這些時間長不變的我們就可以把他們緩存到瀏覽器,下載訪問的時候直接就從本地加載文件赐写,不會訪問服務(wù)器鸟蜡,這樣可以加快瀏覽器的加載速度。
2.瀏覽器緩存分為倆大類挺邀,一個就是強緩存揉忘,還有一個就是協(xié)商緩存。而我們控制緩存的方式就是通過修改請求消息的頭部端铛,或者響應(yīng)消息的頭部泣矛。
3.強緩存。
修改的是`Cache-Control`字段禾蚕,控制資源文件是否被緩存您朽。常用的有
Cache-control: no-cache 意味著文件的內(nèi)容不應(yīng)當被緩存。這在搜索或者翻頁結(jié)果中非常有用换淆,因為同樣的URL哗总,對應(yīng)的內(nèi)容會發(fā)生變化几颜。
Cache-control:max-age:99999999 指定緩存過期的相對時間秒數(shù)。
它的緩存原理是:
瀏覽器第一次跟服務(wù)器請求一個資源讯屈,服務(wù)器會把`Cache-Control`的跟著資源返回來蛋哭。
瀏覽器再請求這個資源時,先從緩存中尋找涮母,找到這個資源后谆趾,根據(jù)它第一次的請求時間和Cache-Control設(shè)定的有效期,計算出一個資源過期時間哈蝇,再拿這個過期時間跟當前的請求時間比較棺妓,如果請求時間在過期時間之前,就能命中緩存炮赦,否則就不行怜跑。
如果緩存沒有命中,瀏覽器直接從服務(wù)器加載資源時吠勘,Cache-Control Header在重新加載的時候會被更新性芬。
4.協(xié)商緩存
修改的是`last-modified : Tue, 04 Apr 2017 21:05:15 GMT`字段,表示這個資源在服務(wù)器上的最后修改時間剧防,
它的緩存原理是:
當瀏覽器向服務(wù)器請求資源的時候植锉,服務(wù)器會把時間隨響應(yīng)消息返回到瀏覽器。
當再次請求服務(wù)器的時候峭拘,瀏覽器會把`last-modified`傳給服務(wù)器俊庇,服務(wù)器會比較一下該文件在服務(wù)器的最后修改時間A和瀏覽器發(fā)過來的時間B。
如果A<=B鸡挠,那么就不會重新請求資源辉饱,否則,服務(wù)器就給客戶端返回新的資源文件拣展。