2012-02-27 94 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