2012-02-27 92 views
7

我对Node.js/Express很新,但我想我正在慢慢掌握它。我已经添加了这些代码,从我可以告诉似乎是相当标准:Node.js/Express缓存

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

一窥Chrome的高速缓存表明,是的,一切都在高速缓存。欢呼!但是,当我在我的网站上运行Chrome的审核(并且我注意到,在其他基于Node的网站上)时,Chrome表示该网站没有缓存任何内容。什么可能导致这种差异?

+1

在运行之前,您是否将'环境'设置为'生产'? – EhevuTov 2012-03-16 01:43:07

+0

是的,与Nodejitsu一起使用,默认情况下会自动使用'production'。在生产模式下本地运行它会在所有资源上生成标题max-age = 0。看起来Chrome可能只是为了安全而缓存,因为Inspector并未在缓存中显示任何内容。 – JacobEvelyn 2012-03-18 03:59:58

回答

11
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审计是我的PC(浏览器17.0就好了。 963.83,Linux,Node 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 
+1

所以我是一个白痴......我正在看我的请求的缓存控制头,而不是响应。 但我仍然遇到Chrome审核问题...当我在生产模式下本地运行它时,一切正常:缓存控制标头的正确和Chrome审核不会发生抱怨。但是,当我部署到Nodejitsu时,Cache-Control仍然是正确的(这意味着它必须使用生产模式),但现在Chrome的审计表示没有任何缓存。 – JacobEvelyn 2012-03-29 18:07:27