Когда я перезагружаю веб-сайт, созданный с помощью express, я получаю пустую страницу с Safari (не с Chrome), потому что сервер NodeJS отправляет мне код состояния 304.
Как это решить?
Конечно, это также может быть проблемой Safari, но на самом деле он отлично работает на всех других веб-сайтах, так что это должно быть проблемой и на моем сервере NodeJS.
Для создания страниц я использую Jade с расширением res.render
.
Обновление: похоже, что эта проблема возникает из-за того, что Safari отправляет 'cache-control': 'max-age=0'
при перезагрузке.
Обновление 2: теперь у меня есть обходной путь, но есть ли лучшее решение? Обходной путь:
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…
}
Обновление 3: Итак, полная часть кода в настоящее время:
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);
}
}