點擊後退按鈕時,Safari 載入舊的 You Tube 影片時出現問題。我嘗試將 onunload="" (這裡提到 Preventing cache on back-button in Safari 5)添加到 body 標記,但在這種情況下不起作用。
有什麼方法可以阻止 safari 從某個頁面上的快取載入嗎?
P粉5140018872024-01-22 13:43:52
所有這些答案都有點破解。在現代瀏覽器(safari)中,僅在 onpageshow
解決方案上有效,
window.onpageshow = function (event) { if (event.persisted) { window.location.reload(); } };
但在慢速裝置上,有時您會在重新載入之前看到一瞬間之前的快取視圖。處理這個問題的正確方法是在伺服器回應上正確設定 Cache-Control ,如下所示
'快取控制','無緩存,max-age=0,必須重新驗證,無儲存'
P粉4959559862024-01-22 09:58:12
您的問題是由後退快取所引起的。當使用者離開時,它應該會保存頁面的完整狀態。當使用者使用後退按鈕導航回來時,可以非常快速地從快取載入頁面。這與僅快取 HTML 程式碼的普通快取不同。
當bfcache載入頁面時,onload
事件不會被觸發。相反,您可以檢查 onpageshow
事件的 persisted
屬性。它在初始頁面載入時設定為 false。當頁面從 bfcache 載入時,它被設定為 true。
Kludgish 的解決方案是在從 bfcache 載入頁面時強制重新載入。
window.onpageshow = function(event) { if (event.persisted) { window.location.reload() } };
如果您使用 jQuery,則執行以下操作:
$(window).bind("pageshow", function(event) { if (event.originalEvent.persisted) { window.location.reload() } });