当我重新加载一个用 Express 制作的网站时,我会得到一个用 Safari (而不是 Chrome)制作的空白页面,因为 NodeJS 服务器会给我发送一个304状态码。
怎么解决这个问题?
当然,这也可能只是 Safari 的一个问题,但实际上它在所有其他网站上都能正常工作,所以这在我的 NodeJS 服务器上也是一个问题。
为了生成页面,我使用了 Jade 和 res.render
。
Update: It seems like this problem occurs because Safari sends 'cache-control': 'max-age=0'
on reload.
更新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);
}
}