Nodejs Express框架缓存
我正在使用Nodejs和Express Js。另外,我将NowJS添加到Express Js中以进行一些实时处理。
在配置文件中,我有
app.configure('production', function() {var oneYear = 31557600000;
app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
app.use(express.errorHandler());});
然后使用以下命令运行该应用程序:
$ NODE_ENV=production node app.js
但是,文件(图像,css,js)似乎没有被缓存,它们总是作为新文件提供。
P / s:我刚刚在localhost上进行了测试,缓存似乎可以在localhost上运行,但是,当上传到服务器时,缓存不再起作用。
回答:
Express是基于Connect构建的,而Connect提供了“静态”中间件。这是缓存的代码:
if (!res.getHeader('Cache-Control')) res.setHeader('Cache-Control', 'public, max-age=' + (maxAge / 1000));
您可以在这里找到该代码:
https://github.com/senchalabs/connect/blob/master/lib/middleware/static.js#L147
因此,您可以看到Express正在向浏览器发送“ Cache-
Control”标头,告诉他将文件缓存一段时间。因此,这不是“一次加载文件,然后始终将其提供给所有客户端”,而是更多的“告诉每个客户端在他第一次下载文件时对其进行缓存”(这意味着所有客户端都必须下载该文件缓存一次)。
以上是 Nodejs Express框架缓存 的全部内容, 来源链接: utcz.com/qa/431398.html