Cuando recargo un sitio web creado 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 solucionar 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, por lo que también tiene que ser un problema en mi servidor NodeJS.
Para generar las páginas, estoy usando Jade con res.render
.
Actualización: parece que este problema se produce porque Safari envía una 'cache-control': 'max-age=0'
recarga.
Actualización 2: ahora tengo una solución alternativa, pero ¿hay una solución mejor? Solución alterna:
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: la parte completa del código 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);
}
}