express的預設Cache-Control

丁少华發表於2024-06-23

express渲染頁面一共有三種方式:將頁面作為靜態資源 express.static、res.sendFile、res.render。
其中前兩種方式都會有預設快取 Cache-Control: public, max-age=0

如果你正在學習快取這一章,那這個坑不要踩。 可以試試原生的node啟服務

如果你想要繼續使用express,還想借此聯絡快取這一章,你可以這麼做,express.static關閉預設快取配置+使用模板

app.use(express.static('assets', { // 給靜態資源設定響應頭
    etag: false, //移除預設配置項
    cacheControl: false, //移除預設配置項
    lastModified: false, //移除預設配置項
    setHeaders: (res, path, stat) => {
        res.setHeader('Cache-Control', 'no-store'); //自己設定頭部資訊
    }
}))

另外 模板的res.render 返回響應頭雖然沒有Cache-Control但是它又有其它預設快取值干擾

Date:Sun, 23 Jun 2024 09:24:29 GMT
Etag:W/"111-i9FchrKyKmHwfUGfPSSJu2adINw"

總之,要學習http快取,還是放棄express 轉為原生node的demo吧,它的響應頭比較乾淨 不會干擾你

相關文章