Node.js express.static()是否在内存中缓存文件?
在针对NodeJS的ExpressJS中,我们可以执行以下操作:Node.js express.static()是否在内存中缓存文件?,node.js,caching,express,Node.js,Caching,Express,在针对NodeJS的ExpressJS中,我们可以执行以下操作: app.use(express.static(__dirname + '/public')); 为所有静态CSS、JS和图像文件提供服务。我的问题是: 1) 当我们这样做时,Express是自动将文件缓存在服务器的内存中,还是每次提供一个资源时都从硬盘中读取 2) 当我们这样做时,默认情况下使用ETag的Express是将资源保存在客户机的硬盘上,还是仅保存在客户机的内存上 静态中间件不进行服务器端缓存。它允许您执行两种客户端缓
app.use(express.static(__dirname + '/public'));
为所有静态CSS、JS和图像文件提供服务。我的问题是:
1) 当我们这样做时,Express是自动将文件缓存在服务器的内存中,还是每次提供一个资源时都从硬盘中读取
2) 当我们这样做时,默认情况下使用ETag的Express是将资源保存在客户机的硬盘上,还是仅保存在客户机的内存上
app.use(express.static(myStaticPath, {
etag: false
}))
Max ageis会将Max age设置为某个时间量,因此浏览器只会在一天后请求该资源
app.use(express.static(myStaticPath, {
maxAge: '5000' // uses milliseconds per docs
}))
有关更多详细信息,请阅读此
1.请注意,即使express没有这样做(我不确定),您的操作系统实际上也可能会这样做。因此,它每次都尝试从服务器硬盘读取数据…浏览器如何?当浏览器关闭时,浏览器是否仍然记得资源?如果缓存仍然存在。Dan D……我想你是说资源确实存储在客户端的硬盘中。。。在什么情况下缓存会持久而不会持久?@Chonglippang用户是否清除了他们的浏览器历史记录?它们是否在私密/匿名模式下运行(即无缓存)?他们是否使用显式禁用缓存的开发工具?缓存文件是否已过期?这取决于用户。他们的客户端处理缓存的方式超出了服务器的控制范围(除了设置expires的长度)。哈哈,他用了一种很好的Ram磁盘方法。几年前我用它来加速MSSQL数据库。如果采用这种方法,则需要一个监视程序来在ramdisk和持久性存储之间进行同步。