Ketika saya memuat ulang situs web yang dibuat dengan express, saya mendapatkan halaman kosong dengan Safari (bukan dengan Chrome) karena server NodeJS mengirimi saya kode status 304.
Bagaimana mengatasi ini?
Tentu saja, ini juga bisa menjadi masalah Safari, tetapi sebenarnya berfungsi di semua situs web lain dengan baik, jadi ini juga menjadi masalah di server NodeJS saya.
Untuk menghasilkan halaman, saya menggunakan Jade dengan res.render
.
Pembaruan: Sepertinya masalah ini terjadi karena Safari mengirim 'cache-control': 'max-age=0'
saat memuat ulang.
Pembaruan 2: Saya sekarang memiliki solusi, tetapi apakah ada solusi yang lebih baik? Solusi:
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…
}
Pembaruan 3: Jadi bagian kode lengkap saat ini:
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);
}
}