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,则执行以下操作: