Opera后台缓存功能

时间:2011-10-10 14:36:24

标签: c# jquery asp.net opera mvp

我有一些jQuery在用户执行操作后修改页面上的元素。这些都是持久的服务器端,所以它对用户来说都很好看并且流畅。

当用户点击异地,然后点击后退按钮时,除Opera之外的所有浏览器都会重新请求页面,因此用户仍会看到更改。然而,对于Opera,该站点返回到它的Jquery之前的状态(因为它没有从服务器请求该页面)。

可以做一些令人讨厌的事情,例如检查浏览器并刷新Opera,但显然这不太理想。

有什么想法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

您是否可以使用某些HTML5本地存储来保留这些更改客户端(对于那些具有HTML5兼容浏览器的用户)并优雅地降级为服务器请求而不是那些。

快速浏览后 - Opera似乎开始支持Opera 10.5中的LocalStorage(早在2010年初),我认为它也会自动更新,因此使用Opera的2.7%用户中的大多数都应具备此功能。

我建议使用http://www.modernizr.com/检查是否存在功能,然后将结果存储在Object Literal JSON中,将其结果存储到本地存储中(应该使存储和检索更容易!)

(HTML5本地存储指南 - http://php-html.net/tutorials/html5-local-storage-guide/

答案 1 :(得分:0)

没有人回答我自己的问题,但似乎以下问题解决了我的问题:

history.navigationMode = 'fast';

设置这意味着页面将以您离开页面时所处的确切状态加载,这基本上就是我所寻找的。它似乎只是一个Opera设置,虽然它似乎只是Opera的行为不同。

我找到了信息here

答案 2 :(得分:0)

Opera有一些启发式方法来确定页面是否需要在历史导航中“重新初始化”。启发式方法包括页面是否正在侦听卸载事件(因为我们无法“撤消”卸载事件所做的任何操作),以及导致导航的代码是否从单击事件中运行(因为脚本经常禁用按钮并且不容易翻转更改页面的状态)。如果你可以避免触发启发式(Keep It Simple),即使没有history.navigationMode hack,问题也应该消失。