2012-02-27 15 views
7

Sono abbastanza nuovo su Node.js/Express, ma penso che mi sto lentamente prendendo la mano. Ho aggiunto questo codice, che da quello che posso dire sembra essere abbastanza standard:Node.js/Cache Express

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

Una sbirciatina nella cache di Chrome rivela che, sì, tutto è nella cache. Evviva! Ma quando eseguo gli audit di Chrome sul mio sito (e, ho notato, su altri siti basati su Node), Chrome dice che il sito non memorizza nella cache nulla. Cosa potrebbe causare questa discrepanza?

+1

Hai impostato il tuo ambiente con "produzione" prima di eseguirlo? – EhevuTov

+0

Sì, in esecuzione con Nodejitsu che utilizza automaticamente "produzione" come predefinito. Eseguendolo localmente in modalità produzione produce l'intestazione max-age = 0 su tutte le risorse. Sembra che Chrome stia facendo il caching solo per essere sicuro, poiché l'Inspector non rivela nulla nella cache. – JacobEvelyn

risposta

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); 

L'esecuzione del codice di cui sopra, e la navigazione ad una pagina test.html che si trova nella directory pubblica/e ha un'immagine di prova mi dà il seguente intestazioni di risposta e Chrome Audit è bene sul mio PC (Chrome 17.0. 963.83, Linux, Nodo 0.6.13, Express più recente). Dovresti ricontrollare se è veramente in modalità di produzione.

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

Quindi sono un idiota ... Stavo guardando l'intestazione di Cache-Control della mia richiesta e non la risposta. Ma ho ancora problemi con l'audit di Chrome ... quando lo eseguo localmente in modalità di produzione, tutto è a posto: l'intestazione di Cache-Control è corretta e l'audit di Chrome non si lamenta. Quando si esegue la distribuzione su Nodejitsu, tuttavia, Cache-Control è ancora corretto (il che significa che deve utilizzare la modalità di produzione), ma ora gli audit di Chrome dicono che la cache non sta funzionando. – JacobEvelyn