摘要:一認(rèn)識(shí)瀏覽器緩存瀏覽器緩存分為強(qiáng)緩存和協(xié)商緩存。瀏覽器接收資源,把資源和相應(yīng)頭緩存下來(lái)。協(xié)商緩存當(dāng)瀏覽器判斷不是強(qiáng)緩存,就會(huì)發(fā)向服務(wù)器發(fā)請(qǐng)求,判斷是否是協(xié)商緩存。如果是,服務(wù)器會(huì)返回,瀏覽器從緩存中加載。
一、認(rèn)識(shí)瀏覽器緩存
瀏覽器緩存分為:強(qiáng)緩存和協(xié)商緩存。
1、強(qiáng)緩存:瀏覽器加載資源時(shí),第一步先判斷它是否是強(qiáng)緩存,如果是,瀏覽器將直接從自己的緩存中讀取,不會(huì)向服務(wù)器發(fā)送請(qǐng)求。
上圖,status200,Size是from memory cache就是走的強(qiáng)緩存。那么什么是強(qiáng)緩存呢?瀏覽器又是咋判斷的呢?
Expires字段:1、瀏覽器第一次向服務(wù)器請(qǐng)求,服務(wù)器返回資源并在response header加上Expires字段,是客戶(hù)端緩存有效期,是絕對(duì)時(shí)間。2、瀏覽器接收資源,把資源和相應(yīng)頭緩存起來(lái)。3、待到再次請(qǐng)求這個(gè)資源時(shí),先在緩存中找,找到了看Expires字段,判斷是否過(guò)期。若沒(méi)過(guò)期直接從緩存加載。若過(guò)期了,再向服務(wù)器請(qǐng)求。
但是絕對(duì)時(shí)間有時(shí)會(huì)有偏差,所以引出了Cache-Control。
Cache-Control字段:1、瀏覽器第一次向服務(wù)器請(qǐng)求,服務(wù)器返回資源并在response header加上Cache-Control字段,也是緩存的有效期,但是是相對(duì)時(shí)間,比如:Cache-Control:max-age=56700000。2、瀏覽器接收資源,把資源和相應(yīng)頭緩存下來(lái)。3、待到瀏覽器再次請(qǐng)求這個(gè)資源時(shí),先在緩存找,根據(jù)第一次的請(qǐng)求時(shí)間和Cache-Control相對(duì)時(shí)間算出過(guò)期時(shí)間。若沒(méi)過(guò)期,直接從緩存加載。若過(guò)期了,再向服務(wù)器請(qǐng)求。
Cache-Control彌補(bǔ)了Expires的不足,更安全有效。
2、協(xié)商緩存:當(dāng)瀏覽器判斷不是強(qiáng)緩存,就會(huì)發(fā)向服務(wù)器發(fā)請(qǐng)求,判斷是否是協(xié)商緩存。如果是,服務(wù)器會(huì)返回304Not Modified,瀏覽器從緩存中加載。那什么又是協(xié)商緩存呢?
Last-Modified和If-Modified-Since字段:1、瀏覽器第一次向服務(wù)器發(fā)請(qǐng)求,服務(wù)器返回資源并在response header加上Last-Modified字段,表示資源最后修改的時(shí)間。2、瀏覽器再次請(qǐng)求這個(gè)資源時(shí),請(qǐng)求頭會(huì)加上If-Modified-Since字段。若這兩個(gè)字段一樣,說(shuō)明資源沒(méi)有修改過(guò),返回304Not Modified,瀏覽器從緩存中獲取資源。若這兩個(gè)字段不一樣,說(shuō)明資源修改過(guò),服務(wù)器正常返回資源。
但有時(shí)候服務(wù)器上資源有變化,單最后修改時(shí)間沒(méi)更新,則引出下面兩個(gè)字段。
ETag、If-None-Match:1、瀏覽器第一次向服務(wù)器請(qǐng)求,服務(wù)器返回資源并在response header上加ETag字段。表示資源本身,資源有變化,則該字段有變化。2、瀏覽器再次向服務(wù)器請(qǐng)求這個(gè)資源時(shí),請(qǐng)求頭攜帶If-None-Match字段。若這兩個(gè)字段相同,則代表資源沒(méi)有變化,服務(wù)器返回304Not Modified,瀏覽器從緩存中加載。若兩個(gè)字段不同,證明資源有變動(dòng),服務(wù)器正常返回資源。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/90465.html
摘要:一認(rèn)識(shí)瀏覽器緩存瀏覽器緩存分為強(qiáng)緩存和協(xié)商緩存。瀏覽器接收資源,把資源和相應(yīng)頭緩存下來(lái)。協(xié)商緩存當(dāng)瀏覽器判斷不是強(qiáng)緩存,就會(huì)發(fā)向服務(wù)器發(fā)請(qǐng)求,判斷是否是協(xié)商緩存。如果是,服務(wù)器會(huì)返回,瀏覽器從緩存中加載。 一、認(rèn)識(shí)瀏覽器緩存 瀏覽器緩存分為:強(qiáng)緩存和協(xié)商緩存。1、強(qiáng)緩存:瀏覽器加載資源時(shí),第一步先判斷它是否是強(qiáng)緩存,如果是,瀏覽器將直接從自己的緩存中讀取,不會(huì)向服務(wù)器發(fā)送請(qǐng)求。上圖,s...
摘要:雖然如此,但是網(wǎng)站前端性能優(yōu)化的思路基本沒(méi)變。為什么前端性能如此重要數(shù)據(jù)顯示只有的最終用戶(hù)響應(yīng)時(shí)間花在了下載文檔上。前端性能優(yōu)化一味奉行最佳實(shí)踐有時(shí)候反而過(guò)而不及,所以針對(duì)項(xiàng)目的實(shí)際情況來(lái)優(yōu)化才是明智的選擇。 前端近幾年變化很大,各種工具,庫(kù),框架并發(fā)。雖然如此,但是網(wǎng)站前端性能優(yōu)化的思路基本沒(méi)變。為什么前端性能如此重要?數(shù)據(jù)顯示: 只有 10%~20% 的最終用戶(hù)響應(yīng)時(shí)間花在了下載...
摘要:談起閉包,它可是兩個(gè)核心技術(shù)之一異步基于打造前端持續(xù)集成開(kāi)發(fā)環(huán)境本文將以一個(gè)標(biāo)準(zhǔn)的項(xiàng)目為例,完全拋棄傳統(tǒng)的前端項(xiàng)目開(kāi)發(fā)部署方式,基于容器技術(shù)打造一個(gè)精簡(jiǎn)的前端持續(xù)集成的開(kāi)發(fā)環(huán)境。 這一次,徹底弄懂 JavaScript 執(zhí)行機(jī)制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機(jī)制,如果讀完本文還不懂,可以揍我。 不論你是javascript新手還是老鳥(niǎo),不論是面試求職,還是日...
閱讀 2505·2023-04-25 19:31
閱讀 2239·2021-11-04 16:11
閱讀 2805·2021-10-08 10:05
閱讀 1515·2021-09-30 09:48
閱讀 2315·2019-08-30 15:56
閱讀 2406·2019-08-30 15:56
閱讀 2174·2019-08-30 15:53
閱讀 2268·2019-08-30 15:44