2012-02-27 21 views
7

Soy bastante nuevo en Node.js/Express, pero creo que me estoy acostumbrando lentamente. He añadido este código, que por lo que puedo decir parece ser bastante estándar:Node.js/Express Caching

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

Una ojeada en caché de Chrome revela que, sí, todo está el almacenamiento en caché. ¡Viva! Pero cuando ejecuto las auditorías de Chrome en mi sitio (y, lo he notado, en otros sitios con Node), Chrome dice que el sitio no está almacenando en caché nada. ¿Qué podría causar esta discrepancia?

+1

¿Has configurado tu entorno con 'producción' antes de ejecutarlo? – EhevuTov

+0

Sí, ejecutándose con Nodejitsu que automáticamente usa 'producción' como valor predeterminado. Al ejecutarlo localmente en el modo de producción, se genera el encabezado max-age = 0 en todos los recursos. Parece que Chrome está almacenando en caché solo para estar seguro, ya que el Inspector no revela nada en el caché. – JacobEvelyn

Respuesta

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

La ejecución del código anterior, y navegar a una página test.html que se encuentra en el directorio público/y tiene una imagen de prueba me da las siguientes cabeceras de respuesta y Chrome Auditoría está bien en mi PC (17,0 Chrome. 963.83, Linux, Nodo 0.6.13, Express más reciente). Debería verificar si realmente está en modo de producción.

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

Así que soy un idiota ... Estaba mirando el encabezado Cache-Control de mi solicitud y no la respuesta. Pero todavía tengo problemas con la auditoría de Chrome ... cuando lo ejecuto localmente en modo de producción, todo está bien: el encabezado de Cache-Control es correcto y la auditoría de Chrome no se queja. Cuando implemente en Nodejitsu, sin embargo, el Cache-Control sigue siendo correcto (lo que significa que debe estar usando el modo de producción) pero ahora las auditorías de Chrome dicen que no hay nada en el almacenamiento en caché. – JacobEvelyn

Cuestiones relacionadas