在 ExpressJS for NodeJS 中,我们可以执行以下操作:
app.use(express.static(__dirname + '/public'));
提供所有静态 CSS、JS 和图像文件。我的问题是:
1) 当我们这样做时,Express 是自动将文件缓存在服务器的内存中,还是在每次提供资源时从硬盘读取?
2) 当我们这样做时,Express 是默认使用 ETag 将资源保存在客户端的硬盘上,还是只保存在客户端的内存上?
最佳答案
- 静态中间件不进行服务器端缓存。它允许您执行两种客户端缓存方法:ETag 和 Max-Age:
如果浏览器在页面中看到 ETag,它将缓存它。下次浏览器加载页面时,它会检查 ETag 编号是否更改。如果文件完全相同,它的 ETag 也是如此 - 服务器以 HTTP 304(“未修改”)状态代码进行响应,而不是再次发送所有字节并节省大量带宽。 Etag 默认是开启的,但是你可以像这样关闭它:
app.use(express.static(myStaticPath, {
etag: false
}))
Max-age 会将 max-age 设置为某个时间量,因此浏览器只会在一天过后才请求该资源。
app.use(express.static(myStaticPath, {
maxAge: '5000' // uses milliseconds per docs
}))
有关更多详细信息,您可以阅读此 article
- 默认情况下它在硬盘驱动器上,但有人可以使用 this 之类的东西
关于node.js - express.static() 是否在内存中缓存文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32154656/