2010-05-23 64 views
5

我有一种情况,我的页面从数据库加载一些信息,然后通过AJAX进行修改。使用ajax修改页面时出现问题,浏览器将未修改的页面保留在缓存中

我点击一个链接到另一个页面,然后使用'返回'按钮返回到原始页面。

由于浏览器在缓存中存储了未更改的页面,因此我之前所做的通过AJAX进行的页面更改未出现。

有没有办法解决这个问题,而不是设置页面不要缓存?

谢谢:)

回答

1

试想一下,每个请求到服务器的信息,包括初始页面加载且每个AJAX请求,是不同的实体。每一个都可以或不可以缓存在服务器和浏览器之间的任何地方。

您正在修改向服务器提供任意请求和动态DOM操作的初始页面(在大多数情况下由浏览器缓存)。浏览器必须能够跟踪这些变化。

您将不得不维护状态,也许使用cookie来重建页面。事实上,在我看来,一个动态生成的文档,你可能希望移动和移出应该肯定有一个工作流定义,持续和检索它的状态。

也许用发送给服务器的密钥为每个操纵元素设置一个cookie来获取数据?

+0

那么,你的意思是将每个变化存储在一个cookie中的页面元素,并使用JS重新加载这些更改,如果页面返回? – 2010-05-23 04:55:02

+0

@David如果你设计你的代码的方式是一个特定的输入产生一个特定的输出,你可以简单地存储这些密钥。例如 - 用户正在查看一个很好的格式化列表或网格,其中包含一系列关于多个房地产属性的详细信息。用户花时间编译这个信息列表,所以丢失它可能会降低您的网站的价值。编写你的代码,以便你可以只使用列表的主键一次构建一个项目。然后,无论何时列表被修改,您只需在cookie中保存一个[233,2235,25235,23] – 2010-05-23 05:08:31

+0

的密钥列表,并且只要您的脚本加载,就检查该cookie。如果它存在,那么你知道你应该通过调用服务器并检索并显示列表中每个项目的数据来重建列表。那有意义吗?我可能会做更多的努力,但是你的代码会更聪明,从长远来看,你会做更多的事情。实际上有很多ajax控件,比如jquery插件,它们已经能够使用cookie来维护状态。大多数任何价值为盐的网格都可以使用我刚刚描述的策略在页面周期中存活下来。无论如何 - 祝你好运。 – 2010-05-23 05:11:56

相关问题