一、強(qiáng)緩存
強(qiáng)緩存是指瀏覽器在請(qǐng)求資源時(shí),先檢查本地緩存是否存在該資源的副本,并且該副本是否有效。如果有效,瀏覽器直接從本地緩存中獲取資源,不會(huì)發(fā)送請(qǐng)求到服務(wù)器。
使用強(qiáng)緩存策略時(shí),如果緩存資源有效,則直接使用緩存資源,不必在向服務(wù)器發(fā)起請(qǐng)求。
常見的強(qiáng)緩存策略有兩種:Expires 和 Cache-Control:
- Expires 是HTTP/1.0協(xié)議中的字段,它告訴瀏覽器資源的過期時(shí)間。當(dāng)瀏覽器再次請(qǐng)求該資源時(shí),會(huì)先比較當(dāng)前時(shí)間與過期時(shí)間,如果未過期則直接使用本地緩存,否則再向服務(wù)器發(fā)送請(qǐng)求。
- Cache-Control 是HTTP/1.1協(xié)議中的字段,它可以設(shè)置多個(gè)指令來控制緩存行為。常用的指令有:max-age、no-cache、no-store等。其中,max-age 指令告訴瀏覽器資源的有效期,no-cache 指令告訴瀏覽器不使用強(qiáng)緩存,而是使用協(xié)商緩存。
二、協(xié)商緩存
協(xié)商緩存是指當(dāng)強(qiáng)緩存失效時(shí),瀏覽器發(fā)送請(qǐng)求到服務(wù)器,通過與服務(wù)器進(jìn)行協(xié)商來確定是否可以使用緩存的副本。
如果命中強(qiáng)制緩存,我們無需發(fā)起新的請(qǐng)求,直接使用緩存內(nèi)容,如果沒有命中強(qiáng)制緩存,如果設(shè)置了協(xié)商緩存,這個(gè)時(shí)候協(xié)商緩存就會(huì)發(fā)揮作用。
常見的協(xié)商緩存策略有兩種:Last-Modified 和 ETag:
- Last-Modified 是服務(wù)器響應(yīng)頭中的字段,它表示資源的最后修改時(shí)間。當(dāng)瀏覽器再次請(qǐng)求該資源時(shí),會(huì)攜帶 If-Modified-Since 字段,將資源的最后修改時(shí)間發(fā)送給服務(wù)器。如果服務(wù)器判斷該資源的最后修改時(shí)間與 If-Modified-Since 字段相同,則返回 304 Not Modified 狀態(tài)碼,告訴瀏覽器可以使用緩存的副本。
- ETag 是服務(wù)器響應(yīng)頭中的字段,它是一個(gè)唯一標(biāo)識(shí)符,表示資源的版本號(hào)。當(dāng)瀏覽器再次請(qǐng)求該資源時(shí),會(huì)攜帶 If-None-Match 字段,將資源的 ETag 值發(fā)送給服務(wù)器。如果服務(wù)器判斷該資源的 ETag 值與 If-None-Match 字段相同,則返回 304 Not Modified 狀態(tài)碼,告訴瀏覽器可以使用緩存的副本。
強(qiáng)緩存和協(xié)商緩存的使用可以減少對(duì)服務(wù)器的請(qǐng)求次數(shù),提高頁面加載速度,提升用戶體驗(yàn)。
總結(jié)
強(qiáng)緩存策略和協(xié)商緩存策略在緩存命中時(shí)都會(huì)直接使用本地的緩存副本,區(qū)別只在于協(xié)商緩存會(huì)向服務(wù)器發(fā)送一次請(qǐng)求。它們緩存不命中時(shí),都會(huì)向服務(wù)器發(fā)送請(qǐng)求來獲取資源。在實(shí)際的緩存機(jī)制中,強(qiáng)緩存策略和協(xié)商緩存策略是一起合作使用的。瀏覽器首先會(huì)根據(jù)請(qǐng)求的信息判斷,強(qiáng)緩存是否命中,如果命中則直接使用資源。如果不命中則根據(jù)頭信息向服務(wù)器發(fā)起請(qǐng)求,使用協(xié)商緩存,如果協(xié)商緩存命中的話,則服務(wù)器不返回資源,瀏覽器直接使用本地資源的副本,如果協(xié)商緩存不命中,則瀏覽器返回最新的資源給瀏覽器。
為什么需要瀏覽器緩存?
對(duì)于瀏覽器的緩存,主要針對(duì)的是前端的靜態(tài)資源,最好的效果就是,在發(fā)起請(qǐng)求之后,拉取相應(yīng)的靜態(tài)資源,并保存在本地。如果服務(wù)器的靜態(tài)資源沒有更新,那么在下次請(qǐng)求的時(shí)候,就直接從本地讀取即可,如果服務(wù)器的靜態(tài)資源已經(jīng)更新,那么我們?cè)俅握?qǐng)求的時(shí)候,就到服務(wù)器拉取新的資源,并保存在本地。這樣就大大的減少了請(qǐng)求的次數(shù),提高了網(wǎng)站的性能。這就要用到瀏覽器的緩存策略了。
所謂的瀏覽器緩存指的是瀏覽器將用戶請(qǐng)求過的靜態(tài)資源,存儲(chǔ)到電腦本地磁盤中,當(dāng)瀏覽器再次訪問時(shí),就可以直接從本地加載,不需要再去服務(wù)端請(qǐng)求了。文章來源:http://www.zghlxwxcb.cn/news/detail-671089.html
使用了瀏覽器緩存,有以下優(yōu)點(diǎn):文章來源地址http://www.zghlxwxcb.cn/news/detail-671089.html
- 減少了服務(wù)器的負(fù)擔(dān),提高了網(wǎng)站的性能
- 加快了客戶端網(wǎng)頁的加載速度
- 減少了多余網(wǎng)絡(luò)數(shù)據(jù)傳輸
到了這里,關(guān)于什么是強(qiáng)緩存和協(xié)商緩存的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!