Quando recarrego um site feito com express, recebo uma página em branco com Safari (não com Chrome) porque o servidor NodeJS me envia um código de status 304.
Como resolver isso?
Claro, isso também pode ser apenas um problema do Safari, mas na verdade ele funciona bem em todos os outros sites, então deve ser um problema no meu servidor NodeJS também.
Para gerar as páginas, estou usando Jade com res.render
.
Atualização: parece que esse problema ocorre porque o Safari envia 'cache-control': 'max-age=0'
na recarga.
Atualização 2: agora tenho uma solução alternativa, mas existe uma solução melhor? Gambiarra:
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…
}
Atualização 3: Portanto, a parte completa do código é atualmente:
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);
}
}