Express로 만든 웹 사이트를 다시로드하면 NodeJS 서버가 304 상태 코드를 보내므로 Safari (Chrome이 아님)에서 빈 페이지가 나타납니다.
이것을 해결하는 방법?
물론 이것은 Safari의 문제 일 수도 있지만 실제로는 다른 모든 웹 사이트에서 잘 작동하므로 NodeJS 서버에서도 문제가 될 것입니다.
페이지를 생성하기 위해 저는 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);
}
}