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

回到顶部