點擊後退按鈕時阻止 Safari 快取頁面
P粉295728625
P粉295728625 2024-01-21 15:00:44
0
2
438

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

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

P粉295728625
P粉295728625

全部回覆(2)
P粉514001887

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

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

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

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

P粉495955986

您的問題是由後退快取所引起的。當使用者離開時,它應該會保存頁面的完整狀態。當使用者使用後退按鈕導航回來時,可以非常快速地從快取載入頁面。這與僅快取 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() 
    }
});
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板