【问题标题】:Node.js/Express CachingNode.js/Express 缓存
【发布时间】:2012-03-17 06:08:03
【问题描述】:

我对 Node.js/Express 还很陌生,但我想我正在慢慢掌握它的窍门。我添加了这段代码,据我所知,这似乎很标准:

app.configure('production', function() {
    var oneYear = 31557600000;
    app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
    app.use(express.errorHandler());
});

浏览 Chrome 的缓存会发现,是的,一切都在缓存中。欢呼!但是当我在我的网站上运行 Chrome 的审核时(而且,我注意到,在其他节点驱动的网站上),Chrome 说该网站没有缓存任何东西。什么可能导致这种差异?

【问题讨论】:

  • 您在运行之前是否将环境设置为“生产”?
  • 是的,使用 Nodejitsu 运行,它会自动使用“生产”作为默认值。在生产模式下本地运行它会在所有资源上生成标头 max-age=0。似乎 Chrome 正在缓存只是为了安全,因为 Inspector 没有在缓存中显示任何内容。

标签: caching google-chrome node.js express browser-cache


【解决方案1】:
var express = require('express');
var app = express.createServer();
var oneYear = 31557600000;
app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
app.use(express.errorHandler());
app.get('/', function(req, res){
  res.send('hello world');
});
app.listen(3000);

执行上面的代码,并导航到位于 /public 目录并有一个测试图像的 test.html 页面给我以下响应标头,Chrome Audit 在我的 PC 上很好(Chrome 17.0.963.83,Linux,节点 0.6.13,Express 最新)。您应该仔细检查它是否真的处于生产模式。

Accept-Ranges:bytes
Cache-Control:public, max-age=31557600
Connection:keep-alive
Date:Fri, 23 Mar 2012 22:52:24 GMT
ETag:"120877-1278958150000"
Last-Modified:Mon, 12 Jul 2010 18:09:10 GMT
X-Powered-By:Express

【讨论】:

  • 所以我是个白痴...我正在查看请求的 Cache-Control 标头而不是响应。但是我仍然对 Chrome 审计有问题......当我在生产模式下本地运行它时,一切都很好:Cache-Control 标头正确,Chrome 审计没有抱怨。然而,当我部署到 Nodejitsu 时,Cache-Control 仍然是正确的(这意味着它必须使用生产模式)但现在 Chrome 的审计表明没有缓存。
猜你喜欢
  • 1970-01-01
  • 2017-08-26
  • 2023-03-28
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多