express.static()是否在内存中缓存文件?

Cho*_*ang 27 caching node.js express

在ExpressJS for NodeJS中,我们可以执行以下操作:

app.use(express.static(__dirname + '/public'));
Run Code Online (Sandbox Code Playgroud)

提供所有静态CSS,JS和图像文件.我的问题是这些:

1)当我们这样做时,Express会自动将文件缓存在服务器的内存中,还是每次提供一个资源时都从硬盘读取?

2)当我们这样做时,Express是否默认使用ETag将资源保存在客户端的硬盘上,或仅保存在客户端的内存中?

Ale*_*kov 45

  1. 静态中间件不进行服务器端缓存.它允许您执行两种客户端缓存方法:ETag和Max-Age:

如果浏览器看到带有页面的ETag,它将缓存它.下次浏览器加载页面时,它会检查ETag编号的更改.如果文件完全相同,那么它的ETag也是如此 - 服务器以HTTP 304("未修改")状态代码响应,而不是再次发送所有字节并节省一堆带宽.Etag默认处于启用状态,但您可以将其关闭:

app.use(express.static(myStaticPath, {
  etag: false
}))
Run Code Online (Sandbox Code Playgroud)

Max-age将max-age设置为一段时间,因此浏览器只会在一天后请求该资源.

app.use(express.static(myStaticPath, {
  maxAge: '5000' // uses milliseconds per docs
}))
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请阅读本文

  1. 默认情况下,它的硬盘驱动器上,但有人可以使用类似于