为什么在Safari 5.x到6.x中打开websocket会使后台缓存失效?

为什么在Safari 5.x到6.x中打开websocket会使后台缓存失效?,safari,websocket,back,Safari,Websocket,Back,例如,如果我在Safari中打开一个页面 http://stackoverflow.com 然后打开safari控制台并打开websocket,例如: var ws = new WebSocket("ws://ws.dslreports.com") 然后单击页面上的链接,然后按“上一步”,此时将忽略后缓存并重新加载页面。我在Safari 5.0上观察到了这一点,它首先引入了hixie websocket支持,最新的Safari 6.x使用了hybi。Chrome和Firefox以及其他支持W

例如,如果我在Safari中打开一个页面

http://stackoverflow.com
然后打开safari控制台并打开websocket,例如:

var ws = new WebSocket("ws://ws.dslreports.com")
然后单击页面上的链接,然后按“上一步”,此时将忽略后缓存并重新加载页面。我在Safari 5.0上观察到了这一点,它首先引入了hixie websocket支持,最新的Safari 6.x使用了hybi。Chrome和Firefox以及其他支持WebSocket的浏览器似乎不会以这种方式使后台缓存失效

因此,我无法在Safari中启用websockets,因为这样做会使创建连接的任何页面的第一次返回的回缓存失效。但是,除非页面尝试重新连接,否则后续的备份将起作用,如果是这样,则每个页面都会导致回缓存丢失

这是故意的吗?除了对Safari用户进行轮询之外,任何其他解决方法都可以回退。这将是一个耻辱,因为Safari对WebSocket的支持非常好


更新:IOS上的mobile Safari eg不会出现意外失效行为,页面可以使用websocket并转到新链接,按back键不会重新向服务器请求页面。

我解决了这个问题,当时我发现,如果在窗口卸载之前正确关闭websocket(使用onbeforeload处理程序),那么Safari问题就解决了,结果就是这样。