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