在ExpressJS documentation中,没有关于如何加载文件的信息。
我的问题是:当我请求一个静态文件时,是否每次请求都从磁盘加载文件?或者以某种方式缓存?如果是这样,怎么样?
答案 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