http緩存:存儲與請求關(guān)聯(lián)的響應(yīng),并將存儲的響應(yīng)復用與后續(xù)請求
http緩存的好處:
- 響應(yīng)速度快
- 減輕服務(wù)器的壓力
http緩存如何實現(xiàn)
- 擴展:http的頭部分為:
- 請求頭
- 響應(yīng)頭
- 通用頭:即可以用在請求頭趁冈,又可以用在響應(yīng)頭。比如Cache-Control
- 實體頭:實體是指http報文想要傳輸?shù)膶嶋H數(shù)據(jù)鳞陨。比如上傳文件時上傳的文件,加載靜態(tài)資源時的資源。實體報頭可能同時存在于 HTTP 請求和響應(yīng)信息中全封,實體報頭既非請求或響應(yīng)報頭粘室。
http緩存分類
按存儲范圍:私有緩存榄檬、共享緩存
私有緩存
存儲在特定的客戶端,比如瀏覽器衔统。通過Cache-Control:private
共享緩存
存儲在客戶端和服務(wù)器之間鹿榜。通過Cache-Control:public
瀏覽器的強制緩存和協(xié)商緩存
-
強緩存:
- 發(fā)起http請求時,直接從瀏覽器讀取緩存锦爵,請求不必到達服務(wù)器舱殿。
- 如果緩存命中,http狀態(tài)碼為200 OK(from memory cache)和 200 OK(from disk cache)
-
協(xié)商緩存:
- 發(fā)起http請求時险掀,要經(jīng)過和服務(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,表示不使用任何緩存
- 如果沒有Cache-Control,查看是否有響應(yīng)頭Expires埠啃,看當前事情是否超過Expires設(shè)置的時間
- 查看是否有通用頭Cache-Control
如何判斷協(xié)商緩存是否命中死宣?