Khi tôi tải lại một trang web được tạo bằng express, tôi nhận được một trang trống với Safari (không phải với Chrome) vì máy chủ NodeJS gửi cho tôi mã trạng thái 304.
Làm thế nào để giải quyết điều này?
Tất nhiên, đây cũng có thể chỉ là một vấn đề của Safari, nhưng thực tế nó hoạt động tốt trên tất cả các trang web khác, vì vậy nó cũng phải là một vấn đề trên máy chủ NodeJS của tôi.
Để tạo các trang, tôi đang sử dụng Jade với res.render
.
Cập nhật: Có vẻ như sự cố này xảy ra do Safari gửi 'cache-control': 'max-age=0'
khi tải lại.
Cập nhật 2: Tôi hiện có một giải pháp khác, nhưng có giải pháp nào tốt hơn không? Cách giải quyết:
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…
}
Cập nhật 3: Vì vậy, phần mã hoàn chỉnh hiện là:
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);
}
}