单击后退按钮时阻止 Safari 缓存页面
P粉295728625
P粉295728625 2024-01-21 15:00:44
0
2
408

单击后退按钮时,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() 
    }
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板