Verhindern Sie, dass Safari die Seite zwischenspeichert, wenn Sie auf die Schaltfläche „Zurück' klicken
P粉295728625
P粉295728625 2024-01-21 15:00:44
0
2
436

Safari hat Probleme beim Laden alter YouTube-Videos, wenn auf die Schaltfläche „Zurück“ geklickt wird. Ich habe versucht, onunload="" (hier erwähnt: Verhindern des Caches auf der Zurück-Schaltfläche in Safari 5) zum Body-Tag hinzuzufügen, aber es funktioniert in diesem Fall nicht.

Gibt es eine Möglichkeit zu verhindern, dass Safari aus dem Cache einer Seite geladen wird?

P粉295728625
P粉295728625

Antworte allen(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() 
    }
});
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage