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吧,它的響應頭比較乾淨 不會干擾你