http緩存:存儲(chǔ)與請(qǐng)求關(guān)聯(lián)的響應(yīng),并將存儲(chǔ)的響應(yīng)復(fù)用與后續(xù)請(qǐng)求
http緩存的好處:
- 響應(yīng)速度快
- 減輕服務(wù)器的壓力
http緩存如何實(shí)現(xiàn)
- 擴(kuò)展:http的頭部分為:
- 請(qǐng)求頭
- 響應(yīng)頭
- 通用頭:即可以用在請(qǐng)求頭,又可以用在響應(yīng)頭。比如Cache-Control
- 實(shí)體頭:實(shí)體是指http報(bào)文想要傳輸?shù)膶?shí)際數(shù)據(jù)。比如上傳文件時(shí)上傳的文件,加載靜態(tài)資源時(shí)的資源。實(shí)體報(bào)頭可能同時(shí)存在于 HTTP 請(qǐng)求和響應(yīng)信息中,實(shí)體報(bào)頭既非請(qǐng)求或響應(yīng)報(bào)頭。
http緩存分類(lèi)
按存儲(chǔ)范圍:私有緩存、共享緩存
私有緩存
存儲(chǔ)在特定的客戶端,比如瀏覽器。通過(guò)Cache-Control:private
共享緩存
存儲(chǔ)在客戶端和服務(wù)器之間。通過(guò)Cache-Control:public
瀏覽器的強(qiáng)制緩存和協(xié)商緩存
-
強(qiáng)緩存:
- 發(fā)起http請(qǐng)求時(shí),直接從瀏覽器讀取緩存,請(qǐng)求不必到達(dá)服務(wù)器。
- 如果緩存命中,http狀態(tài)碼為200 OK(from memory cache)和 200 OK(from disk cache)
-
協(xié)商緩存:
- 發(fā)起http請(qǐng)求時(shí),要經(jīng)過(guò)和服務(wù)器的協(xié)商,才可以使用瀏覽器的緩存
- 如果緩存命中,http狀態(tài)碼為304
-
如何判斷瀏覽器的緩存是否直接可用?
- 查看是否有通用頭Cache-Control
- 如果設(shè)置了Cache-Control:max-age=<seconds>,緩存的最大有效期
- 如果設(shè)置了Cache-Control:no-cache,表示每次都要使用協(xié)商緩存
- 如果設(shè)置了Cache-Control:no-store,表示不使用任何緩存
- 如果沒(méi)有Cache-Control,查看是否有響應(yīng)頭Expires,看當(dāng)前事情是否超過(guò)Expires設(shè)置的時(shí)間
- 查看是否有通用頭Cache-Control
如何判斷協(xié)商緩存是否命中?