Когда я перезагружаю веб-сайт, созданный с помощью экспресс-доставки, я получаю пустую страницу с 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);
}
}