在ExpressJS for NodeJS中,我们可以执行以下操作:
app.use(express.static(__dirname + '/public'));
提供所有静态CSS,JS和图像文件。我的问题是这些:
1)当我们这样做时,Express会自动将文件缓存在服务器的内存中,还是每次提供其中一个资源时都从硬盘读取?
2)当我们这样做时,Express是否默认使用ETag将资源保存在客户端的硬盘上,或仅保存在客户端的内存中?
答案 0 :(得分:39)
如果浏览器在页面上看到 ETag ,它会缓存它。下次浏览器加载页面时,它会检查ETag编号的更改。如果文件完全相同,那么它的ETag也是如此 - 服务器以HTTP 304(“未修改”)状态代码响应,而不是再次发送所有字节并节省一堆带宽。 Etag默认处于开启状态,但您可以将其关闭:
app.use(express.static(myStaticPath, {
etag: false
}))
Max-age 会将max-age设置为一段时间,因此浏览器只会在一天后请求该资源。
app.use(express.static(myStaticPath, {
maxage: '2h'
}))
有关详细信息,请参阅此article