Spa*_*ers 5 safari caching mobile-safari browser-cache
现在这已经在这里找到了一点点,所以我想我正在寻找一个解释而不是修复(虽然这将是王牌),但Safari的后退/前进缓存是非常贪婪的.
我有一个表单提交的问题,但在转到表单操作页面之前加载一个插页式模式窗口.在Safari上,缓存是如此强大,以至于后退按钮的模态打开仍然让我的灵魂非常难过.
我通过解雇模态然后提交表单来解决它.在后面,浏览器有一个半封闭模式(它的Bootstrap,所以它消失)然后只是继续解雇.
现在我知道onunload =""但刷新页面似乎很疯狂.缓存是一件好事,也是您想要的东西,特别是在手机上.
我想我的问题是:
为什么它比Chrome更强烈,无论如何强迫浏览器缓存状态而不仅仅是最后一个状态?
谢谢
哈哈,贪婪是轻描淡写的!但老实说,99% 的情况下,cachingSafari 背后的设计是处理移动设备上页面转换的理想方式。
当您从 Page 转到APage B,然后返回 Page 时A,您不希望因获取资源和资产而给设备带来负担(带宽、电池寿命),此时您可以“暂停”交互之间的状态,然后“返回时继续”。
这实际上就是 Safari Mobile 所做的事情。他们使用 的概念Page Cache,当您从一个页面导航到另一个页面时,它会将整个页面保留在内存中。这减少了获取这些资源的需要,并允许在单击返回时进行快速交互。
这很好……但它确实会导致问题(例如您提出的问题) - 具体来说,您如何区分已挂起的页面和应该被销毁的页面?
值得庆幸的是,WebKit 提供了一个可利用的pageshow事件。除了在页面显示或隐藏时触发(类似于)之外,它还具有指示页面是否已放入或放入页面缓存的巧妙功能。pagehidePage Cacheonunloadpersisted
虽然这不是一个完美的解决方案,但您可以检查pageshow事件的持久性,然后更直接地处理模式(因为您知道它已被缓存),例如立即隐藏它。
如果您还没有,请查看这两个链接:
https://www.webkit.org/blog/427/webkit-page-cache-i-the-basics/ https://www.webkit.org/blog/516/webkit-page-cache-ii-the-卸载事件/
他们很好地解释了页面缓存,并包含我之前引用的pageshow和pagehide事件的代码示例。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |