เมื่อฉันโหลดเว็บไซต์ที่สร้างด้วย Express ซ้ำฉันจะได้รับหน้าว่างพร้อม Safari (ไม่ใช่ใน Chrome) เนื่องจากเซิร์ฟเวอร์ NodeJS ส่งรหัสสถานะ 304 มาให้ฉัน
วิธีแก้ปัญหานี้?
แน่นอนว่านี่อาจเป็นเพียงปัญหาของ 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);
}
}