搜尋

首頁  >  問答  >  主體

點擊後退按鈕時阻止 Safari 快取頁面

點擊後退按鈕時,Safari 載入舊的 You Tube 影片時出現問題。我嘗試將 onunload="" (這裡提到 Preventing cache on back-button in Safari 5)添加到 body 標記,但在這種情況下不起作用。

有什麼方法可以阻止 safari 從某個頁面上的快取載入嗎?

P粉295728625P粉295728625357 天前453

全部回覆(2)我來回復

  • P粉514001887

    P粉5140018872024-01-22 13:43:52

    所有這些答案都有點破解。在現代瀏覽器(safari)中,僅在 onpageshow 解決方案上有效,

    window.onpageshow = function (event) {
        if (event.persisted) {
            window.location.reload();
        }
    };

    但在慢速裝置上,有時您會在重新載入之前看到一瞬間之前的快取視圖。處理這個問題的正確方法是在伺服器回應上正確設定 Cache-Control ,如下所示

    '快取控制','無緩存,max-age=0,必須重新驗證,無儲存'

    回覆
    0
  • P粉495955986

    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() 
        }
    });

    回覆
    0
  • 取消回覆