前端浏览器缓存机制
目錄
- 1 緩存定義及其優(yōu)點(diǎn)
- 2 強(qiáng)緩存
- 2.1 expires 和 Cache-Control
- 3 協(xié)商緩存
- 4 瀏覽器緩存位置
1 緩存定義及其優(yōu)點(diǎn)
什么是緩存?2 強(qiáng)緩存
???????強(qiáng)緩存是當(dāng)我們訪問URL的時(shí)候,不會向服務(wù)器發(fā)送請求,直接從緩存中讀取資源,但是會返回200的狀態(tài)碼。
如何設(shè)置強(qiáng)緩存?
???????我們第一次進(jìn)入頁面,請求服務(wù)器,服務(wù)器會進(jìn)行應(yīng)答,瀏覽器根據(jù)服務(wù)器的應(yīng)答respon Header來判斷是否對資源進(jìn)行緩存,如果響應(yīng)頭中有expires、pragma或cache-control字段,代表是強(qiáng)緩存,瀏覽器就會把資源緩存在memory cache 或 disk cache中。
???????第二次請求時(shí),瀏覽器判斷請求參數(shù),如果符合強(qiáng)緩存條件就直接返回狀態(tài)碼200,從本地緩存中拿數(shù)據(jù)。否則把響應(yīng)參數(shù)存在request header請求中,看是否符合協(xié)商緩存,符合則返回狀態(tài)碼304,不符合則服務(wù)器返回全新資源。
2.1 expires 和 Cache-Control
???????Expires:設(shè)置瀏覽器緩存時(shí)間,時(shí)間是絕對時(shí)間,從設(shè)置的值上可以看出是個(gè)日期,瀏覽器收到Response時(shí)看看有沒有Expires字段有的話緩存頭信息和資源,再次請求時(shí)查看緩存時(shí)間過沒過,沒過在緩存拿出來,過了重新請求。
Cache-Control都可以設(shè)置哪些屬性
服務(wù)端如何判斷緩存已失效?
HTTP1.1推薦使用的驗(yàn)證方式是If-None-Match/Etag,在HTTP1.0中則使用If-Modified-Since/Last-Modified。
3 協(xié)商緩存
觸發(fā)條件:
Cache-Control 的值為 no-cache (不強(qiáng)緩存) 或者 max-age 過期了 (強(qiáng)緩存,但總有過期的時(shí)候)當(dāng)瀏覽器判斷不是強(qiáng)緩存,就會向服務(wù)器發(fā)請求,判斷是否是協(xié)商緩存。如果是,服務(wù)器會返回304 Not Modified,瀏覽器從緩存中加載。
Last-Modified和If-Modified-Since字段:
1、瀏覽器第一次向服務(wù)器發(fā)請求,服務(wù)器返回資源并在response header加上Last-Modified字段,表示資源最后修改的時(shí)間。
2、瀏覽器再次請求這個(gè)資源時(shí),請求頭會加上If-Modified-Since字段。若這兩個(gè)字段一樣,說明資源沒有修改過,返回304Not Modified,瀏覽器從緩存中獲取資源。若這兩個(gè)字段不一樣,說明資源修改過,服務(wù)器正常返回資源。
ETag、If-None-Match:
但有時(shí)候服務(wù)器上資源有變化,單最后修改時(shí)間沒更新,則引出下面兩個(gè)字段。
1、瀏覽器第一次向服務(wù)器請求,服務(wù)器返回資源并在response header上加ETag字段。表示資源本身,資源有變化,則該字段有變化。
2、瀏覽器再次向服務(wù)器請求這個(gè)資源時(shí),請求頭攜帶If-None-Match字段。若這兩個(gè)字段相同,則代表資源沒有變化,服務(wù)器返回304Not Modified,瀏覽器從緩存中加載。若兩個(gè)字段不同,證明資源有變動,服務(wù)器正常返回資源。
4 瀏覽器緩存位置
????????查找瀏覽器緩存時(shí)會按順序查找: Service Worker–>Memory Cache–>Disk Cache–>Push Cache。
1 Service Worker???????在所有瀏覽器緩存中,Disk Cache 覆蓋面基本是最大的。它會根據(jù) HTTP Herder 中的字段判斷哪些資源需要緩存,哪些資源可以不請求直接使用,哪些資源已經(jīng)過期需要重新請求。并且即使在跨站點(diǎn)的情況下,相同地址的資源一旦被硬盤緩存下來,就不會再次去請求數(shù)據(jù)。絕大部分的緩存都來自 Disk Cache。
???????CPU、內(nèi)存、硬盤都是計(jì)算機(jī)的主要組成部分。
???????CPU:中央處理單元(CntralPocessingUit)的縮寫,也叫處理器,是計(jì)算機(jī)的運(yùn)算核心和控制核心。電腦靠CPU來運(yùn)算、控制。讓電腦的各個(gè)部件順利工作,起到協(xié)調(diào)和控制作用。
???????硬盤:存儲資料和軟件等數(shù)據(jù)的設(shè)備,有容量大,斷電數(shù)據(jù)不丟失的特點(diǎn)。
???????內(nèi)存:負(fù)責(zé)硬盤等硬件上的數(shù)據(jù)與CPU之間數(shù)據(jù)交換處理。特點(diǎn)是體積小,速度快,有電可存,無電清空,即電腦在開機(jī)狀態(tài)時(shí)內(nèi)存中可存儲數(shù)據(jù),關(guān)機(jī)后將自動清空其中的所有數(shù)據(jù)。
參考鏈接
總結(jié)
- 上一篇: dataformatstring(Dat
- 下一篇: 2017年html5行业报告,云适配发布