摘要:協(xié)商緩存當(dāng)瀏覽器判斷不是強(qiáng)緩存,就會(huì)發(fā)向服務(wù)器發(fā)請(qǐng)求,判斷是否是協(xié)商緩存。如果是,服務(wù)器會(huì)返回,瀏覽器從緩存中加載。若這兩個(gè)字段相同,則代表資源沒(méi)有變化,服務(wù)器返回,瀏覽器從緩存中加載。
加快頁(yè)面打開(kāi)速度
減輕服務(wù)器壓力
減少網(wǎng)絡(luò)損耗
mate標(biāo)簽控制
1、content-type(文檔內(nèi)容類型:用于設(shè)定文檔的類型和字符集)
2、expires(期限:可以用于設(shè)定網(wǎng)頁(yè)的到期期限)
3、pragma(cashe模式:即是否從緩存中訪問(wèn)網(wǎng)頁(yè)內(nèi)容)
4、refresh(刷新:等待一定時(shí)間自動(dòng)刷新或跳轉(zhuǎn)到其他url)
// 文檔類型 // 必須是 GMT 格式 // 是否設(shè)置緩存 // 等待一定時(shí)間自動(dòng)跳轉(zhuǎn)
接下來(lái)說(shuō)點(diǎn)有用的,瀏覽器會(huì)通過(guò)Response header信息,來(lái)確認(rèn)是否緩存,怎么緩存。
強(qiáng)緩存
協(xié)商緩存
先說(shuō)強(qiáng)緩存:
在控制臺(tái)資源加載 size欄我們會(huì)看到架子啊資源的大小,如果是緩存直接在本地讀取 (from memory cache 來(lái)自內(nèi)存緩存)(from disk cache 來(lái)自磁盤(pán)緩存)
瀏覽器加載資源時(shí)先判斷頭信息是否包含Cache-Control和Expires這兩個(gè)屬性,Expires是http1.0,Cache-Control是http1.1,從版本上來(lái)說(shuō)肯定是Cache-control更強(qiáng)一些,畢竟不能越升級(jí)越low,約定也是兩個(gè)同時(shí)存在Cache-control優(yōu)先級(jí)更高。
截圖為js的Response header信息,包含Cache-control和Expires,但從字面上我們能看出Expires設(shè)置了一個(gè)時(shí)間,我們猜它應(yīng)該是過(guò)期時(shí)間,擦居然猜對(duì)了。我們?cè)俨乱幌翪ache-control:一坨字段,max-age=31536000,我猜也是過(guò)期時(shí)間,哈哈又猜對(duì)了,不逗比了挨個(gè)說(shuō)說(shuō)
Expires:設(shè)置瀏覽器緩存時(shí)間,時(shí)間是絕對(duì)時(shí)間,從設(shè)置的值上可以看出是個(gè)日期,瀏覽器收到Response時(shí)看看有沒(méi)有Expires字段有的話緩存頭信息和資源,再次請(qǐng)求時(shí)查看緩存時(shí)間過(guò)沒(méi)過(guò),沒(méi)過(guò)在緩存拿出來(lái),過(guò)了重新請(qǐng)求。
Cache-control:這個(gè)承載值就多了
max-age=xxx:緩存的內(nèi)容將在 xxx 秒后失效,這個(gè)時(shí)間是個(gè)時(shí)間間隔相對(duì)時(shí)間。
public:所有內(nèi)容都將被緩存(客戶端和代理服務(wù)器都可緩存)
private:內(nèi)容只緩存到私有緩存中(僅客戶端可以緩存,代理服務(wù)器不可緩存)
no-cache:必須先與服務(wù)器確認(rèn)返回的響應(yīng)是否被更改,然后才能使用該響應(yīng)來(lái)滿足后續(xù)對(duì)同一個(gè)網(wǎng)址的請(qǐng)求。因此,如果存在合適的驗(yàn)證令牌(ETag),no-cache 會(huì)發(fā)起往返通信來(lái)驗(yàn)證緩存的響應(yīng),如果資源未被更改,可以避免下載
no-store:所有內(nèi)容都不會(huì)被緩存或 Internet 臨時(shí)文件中
must-revalidation/proxy-revalidation:如果緩存的內(nèi)容失效,請(qǐng)求必須發(fā)送到服務(wù)器/代理以進(jìn)行重新驗(yàn)證
服務(wù)端通過(guò)If-Modified-Since(Last-Modified)和If-None-Match(Etag)這兩個(gè)屬性的值來(lái)判斷緩存是否失效的。
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ù)器正常返回資源。
ETag、If-None-Match:
但有時(shí)候服務(wù)器上資源有變化,單最后修改時(shí)間沒(méi)更新,則引出下面兩個(gè)字段。
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ù)器正常返回資源。
參考:
https://juejin.im/post/5a7a8e...
https://juejin.im/post/59c602...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/100511.html
摘要:雖然有著各種各樣的不同,但是相同的是,他們前端優(yōu)化不完全指南前端掘金篇幅可能有點(diǎn)長(zhǎng),我想先聊一聊閱讀的方式,我希望你閱讀的時(shí)候,能夠把我當(dāng)作你的競(jìng)爭(zhēng)對(duì)手,你的夢(mèng)想是超越我。 如何提升頁(yè)面渲染效率 - 前端 - 掘金Web頁(yè)面的性能 我們每天都會(huì)瀏覽很多的Web頁(yè)面,使用很多基于Web的應(yīng)用。這些站點(diǎn)看起來(lái)既不一樣,用途也都各有不同,有在線視頻,Social Media,新聞,郵件客戶端...
摘要:前端是應(yīng)用服務(wù)器處理之前的部分,前端主要包括等各種資源,針對(duì)不同的資源有不同的優(yōu)化方式。常見(jiàn)方法合并多個(gè)文件和文件,利用整合圖像,使用在實(shí)際的頁(yè)面嵌入圖像數(shù)據(jù),合理設(shè)置緩存等。 web前端是應(yīng)用服務(wù)器處理之前的部分,前端主要包括:HTML,CSS,javascript,image等各種資源,針對(duì)不同的資源有不同的優(yōu)化方式。 內(nèi)容優(yōu)化 (1)減少HTTP請(qǐng)求數(shù):這條策略是最重要最有效...
摘要:是具有此屬性的域名不需要用戶點(diǎn)擊鏈接就在后臺(tái)解析,而域名解析和內(nèi)容載入是串行的網(wǎng)絡(luò)操作,所以這個(gè)方式能減少用戶的等待時(shí)間,提升用戶體驗(yàn)。 web前端性能優(yōu)化主要分為以下幾個(gè)板塊: 加載優(yōu)化 DNS預(yù)解析 合并img、css、javascript文件,減少http請(qǐng)求 緩存一切可緩存資源 使用長(zhǎng)Cache 使用外聯(lián)式引用css、javascript文件 壓縮HTML、css、jav...
摘要:是具有此屬性的域名不需要用戶點(diǎn)擊鏈接就在后臺(tái)解析,而域名解析和內(nèi)容載入是串行的網(wǎng)絡(luò)操作,所以這個(gè)方式能減少用戶的等待時(shí)間,提升用戶體驗(yàn)。 web前端性能優(yōu)化主要分為以下幾個(gè)板塊: 加載優(yōu)化 DNS預(yù)解析 合并img、css、javascript文件,減少http請(qǐng)求 緩存一切可緩存資源 使用長(zhǎng)Cache 使用外聯(lián)式引用css、javascript文件 壓縮HTML、css、jav...
摘要:性能優(yōu)化如何進(jìn)行網(wǎng)站性能優(yōu)化方面減少請(qǐng)求合并文件精靈減少查詢查詢完成之前瀏覽器不能從這個(gè)主機(jī)下載任何任何文件。 性能優(yōu)化 如何進(jìn)行網(wǎng)站性能優(yōu)化 content方面 減少HTTP請(qǐng)求:合并文件、CSS精靈、inline Image 減少DNS查詢:DNS查詢完成之前瀏覽器不能從這個(gè)主機(jī)下載任何任何文件。方法:DNS緩存、將資源分布到恰當(dāng)數(shù)量的主機(jī)名,平衡并行下載和DNS查詢 避免...
閱讀 3547·2021-09-22 15:50
閱讀 3245·2019-08-30 15:54
閱讀 2757·2019-08-30 14:12
閱讀 3067·2019-08-30 11:22
閱讀 2089·2019-08-29 11:16
閱讀 3584·2019-08-26 13:43
閱讀 1198·2019-08-23 18:33
閱讀 930·2019-08-23 18:32