NodeJS / express: Caché y código de estado 304
Cuando recargo un sitio web hecho con Express, obtengo una página en blanco con Safari (no con Chrome) porque el servidor NodeJS me envía un código de estado 304.
¿Cómo resolver esto?
Por supuesto, esto también podría ser solo un problema de Safari, pero en realidad funciona bien en todos los demás sitios web, así que también tiene que ser un problema en mi servidor NodeJS.
Para generar las páginas, estoy usando Jade conres.render
.
Actualizar: Parece que este problema se produce porque Safari envía'cache-control': 'max-age=0'
en recargar
Actualización 2: Ahora tengo una solución alternativa, pero ¿hay una solución mejor? Solución:
app.get('/:language(' + content.languageSelector + ')/:page', function (req, res)
{
// Disable caching for content files
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
// rendering stuff here…
}
Actualización 3: Así que la parte del código completo es actualmente:
app.get('/:language(' + content.languageSelector + ')/:page', pageHandle);
function pageHandle (req, res)
{
var language = req.params.language;
var thisPage = content.getPage(req.params.page, language);
if (thisPage)
{
// Disable caching for content files
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
res.render(thisPage.file + '_' + language, {
thisPage : thisPage,
language: language,
languages: content.languages,
navigation: content.navigation,
footerNavigation: content.footerNavigation,
currentYear: new Date().getFullYear()
});
}
else
{
error404Handling(req, res);
}
}