一尘不染

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

node.js

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

app.use(express.static(__dirname + '/public'));

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

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

2)执行此操作时,Express是否默认使用ETag将资源保存在客户端的硬盘上或仅在客户端的内存上?


阅读 355

收藏
2020-07-07

共1个答案

一尘不染

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

如果浏览器看到带有页面的 ETag ,它将对其进行缓存。下次浏览器加载页面时,它将检查ETag编号是否更改。如果文件完全相同,则其ETag也是如此-
服务器以HTTP 304(“未修改”)状态代码响应,而不是再次发送所有字节并节省大量带宽。Etag默认是打开的,但是您可以这样关闭它:

app.use(express.static(myStaticPath, {
  etag: false
}))

“最大寿命” 是将最大寿命设置为一定的时间,因此浏览器仅会在一天后请求该资源。

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

有关更多详细信息,您可以阅读本文

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