Lorsque je recharge un site Web réalisé avec express, j'obtiens une page vierge avec Safari (pas avec Chrome) car le serveur NodeJS m'envoie un code de statut 304.
Comment résoudre ça?
Bien sûr, cela pourrait aussi être juste un problème de Safari, mais en fait cela fonctionne bien sur tous les autres sites Web, donc cela doit aussi être un problème sur mon serveur NodeJS.
Pour générer les pages, j'utilise Jade avec res.render
.
Mise à jour: il semble que ce problème se produit car Safari envoie 'cache-control': 'max-age=0'
lors du rechargement.
Mise à jour 2: J'ai maintenant une solution de contournement, mais y a-t-il une meilleure solution? Solution de contournement:
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…
}
Mise à jour 3: La partie du code complet est donc actuellement:
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);
}
}