在Express中提供静态文件 - 它是否被缓存?

时间:2016-01-28 17:49:25

标签: node.js express

在ExpressJS documentation中,没有关于如何加载文件的信息。

我的问题是:当我请求一个静态文件时,是否每次请求都从磁盘加载文件?或者以某种方式缓存?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:5)

Express 会自动缓存静态内容。为此,我们需要使用https://www.npmjs.com/package/cache-control中间件。更多信息(http://blog.modulus.io/nodejs-and-express-static-content)帮助

答案 1 :(得分:2)

  

当我请求静态文件时,是否每次请求都从磁盘加载文件?

最有可能的是,它不会。所有现代操作系统都会在内存中缓存文件数据(或者更确切地说是磁盘块),因此从内存中读取对该数据的后续访问,而不必再次从磁盘读取它。

这显然取决于你的系统有多少可用内存,如果其他任务需要内存,磁盘数据将(逐渐)从缓存中清除(通常是最少使用的数据)。

从Node,因此Express,你没有太多控制这个机制,所以从这个角度来看,看起来就像从每个请求的磁盘读取文件一样。

答案 2 :(得分:0)

有客户端缓存(ETags等),但不是服务器端。

我为express实现了一个简单的服务器端缓存系统。你可以在这里看到它的工作版本: https://github.com/drewdotpro/https-express-static-server-cache-and-gzip