服務(wù)器響應(yīng)瀏覽器請(qǐng)求時(shí)響應(yīng)頭中的Cache-Control響應(yīng)頭使得每個(gè)資源都可以通過 Cache-Control HTTP 頭來定義自己的緩存策略,Cache-Control 指令用來告訴我們,那個(gè)資源在什么條件下可以緩存,以及可以緩存多久。
一、Cache-Control頭參數(shù)的含義(響應(yīng)頭中的Cache-Control)
1、no-cache:表示必須先與服務(wù)器確認(rèn)返回的響應(yīng)是否被更改,然后才能使用該響應(yīng)來滿足后續(xù)對(duì)同一個(gè)網(wǎng)址的請(qǐng)求。因此,如果存在合適的驗(yàn)證令牌 (ETag),no-cache 會(huì)發(fā)起往返通信來驗(yàn)證緩存的響應(yīng),如果資源未被更改,可以避免下載。
2、no-store:禁止緩存任何響應(yīng),也就是說每次用戶請(qǐng)求資源時(shí),都會(huì)向服務(wù)器發(fā)送一個(gè)請(qǐng)求,每次都會(huì)下載完整的響應(yīng)。
3、public:如果響應(yīng)被標(biāo)記為public,即使有關(guān)聯(lián)的 HTTP 認(rèn)證,甚至響應(yīng)狀態(tài)碼無法正常緩存,響應(yīng)也可以被緩存。
4、private:瀏覽器可以緩存private響應(yīng),但是通常只為單個(gè)用戶緩存,因此,不允許任何代理服務(wù)器對(duì)其進(jìn)行緩存 。比如,用戶瀏覽器可以緩存包含用戶私人信息的 HTML 網(wǎng)頁,但是 CDN 不能緩存。
5、max-age:用來設(shè)置資源被緩存的最長(zhǎng)時(shí)間(單位是秒)。
二、如何使用Cache-Control
通常,我們可以通過下圖的流程來設(shè)置合適的響應(yīng)頭的Cache-Control頭?!?/p>