如何在内存中缓存使用express.static 提供的文件?

4 caching server-side node.js express

根据这个问题, express.static 每次都会从硬盘读取文件。我想将提供的文件缓存在内存中,因为它们不会改变,数量不多,而且我有足够的内存来这样做。

所以对于这样的代码:

// serve all static files from the /public folder
app.use(express.static(path.join(__dirname, 'public')))

// serve index.html for all routes
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'public/index.html'))
})
Run Code Online (Sandbox Code Playgroud)

如何确保 Express 将通过express.static 和 res.sendFile 提供的文件缓存在内存中?

rob*_*lep 6

这通常不值得麻烦,因为操作系统会为您处理这个问题。

所有现代操作系统都会使用未使用的 RAM 作为“缓冲区缓存”或“页面缓存”。最近使用的文件系统数据将存储在 RAM 中,因此一旦文件加载到内存中,任何后续读取都将从内存中进行,而不是实际从磁盘中读取。

依赖于此的优点是,当进程的内存消耗恰好增加时,操作系统会自动从缓冲区缓存中清除数据,从而不会冒这些进程内存不足的风险(就像您在实现时可能会遇到的那样)自己在用户空间中的东西)。