Quando ricarico un sito web realizzato con express, ottengo una pagina vuota con Safari (non con Chrome) perché il server NodeJS mi invia un codice di stato 304.
Come risolverlo?
Naturalmente, questo potrebbe anche essere solo un problema di Safari, ma in realtà funziona bene su tutti gli altri siti Web, quindi deve essere un problema anche sul mio server NodeJS.
Per generare le pagine, sto usando Jade con res.render
.
Aggiornamento: sembra che questo problema si verifichi perché Safari invia 'cache-control': 'max-age=0'
in fase di ricarica.
Aggiornamento 2: ora ho una soluzione alternativa, ma esiste una soluzione migliore? Soluzione:
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…
}
Aggiornamento 3: quindi la parte completa del codice è attualmente:
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);
}
}