Wenn ich eine mit Express erstellte Website neu lade, wird mit Safari (nicht mit Chrome) eine leere Seite angezeigt, da mir der NodeJS-Server einen 304-Statuscode sendet.
Wie kann man das lösen?
Natürlich könnte dies auch nur ein Problem von Safari sein, aber tatsächlich funktioniert es auf allen anderen Websites einwandfrei, so dass es auch auf meinem NodeJS-Server ein Problem sein muss.
Um die Seiten zu generieren, verwende ich Jade mit res.render
.
Update: Es scheint, dass dieses Problem auftritt, weil Safari 'cache-control': 'max-age=0'
beim Neuladen sendet .
Update 2: Ich habe jetzt eine Problemumgehung, aber gibt es eine bessere Lösung? Problemumgehung:
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…
}
Update 3: Der vollständige Codeteil lautet derzeit:
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);
}
}