84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
點擊後退按鈕時,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,則執行以下操作: