3

我正在使用带有 Rails 3 后端的 jQuery,我有以下场景:

  1. 用户看到对他们帖子的评论并想要删除它
  2. 用户单击删除按钮并从数据库中删除评论
  3. jQuery 用于remove()从 DOM 中删除项目作为对上述步骤 2 的 AJAX 成功响应
  4. 用户导航到不同的页面
  5. 用户点击后退按钮返回到带有评论的页面
  6. 旧评论仍然存在,即使它已从服务器和 DOM 中删除

这种情况下的评论显然被浏览器缓存了,因此即使它以前被删除(并且它也不存在于服务器上)它也会显示出来。

当用户点击后退按钮时,如何防止评论(或之前已从 DOM 中删除的缓存对象)出现?

顺便说一句: 请不要说“不要缓存任何页面” :) 这不是一个选项。

4

3 回答 3

0

我不知道它何时依赖于浏览器,它可能会破坏您的 RESTful 路由,但您可以做的是向帖子来源的同一URL 发出 PUT/POST,并在 AJAX 响应中禁用缓存(使用缓存控制标头)。它应该使浏览器缓存中的此 URL 无效,因为浏览器通常不会使用 HTTP 动词进行区分。

于 2011-04-16T13:50:15.007 回答
0

答案一:如果用户使用后退按钮,当他们看到过去的事情时,他们不应该感到惊讶。

答案二:这有点笨拙,但是您可以尝试使用 ajax 调用$(document).ready()来检查过时的内容。我不确定这会奏效。如果没有,您可以设置 ping 到服务器的时间间隔,以仔细检查屏幕上没有过时的内容。(我的性能很好,ping 频率高达 7 秒)

我不认为有一种非繁重的方法可以做到这一点(除了防止缓存;)

于 2011-04-12T04:57:08.793 回答
0

如果您使用的是 rails 页面缓存,那么您应该在创建、更新和删除操作中清除它。查看链接了解更多详情

于 2011-04-16T19:15:53.143 回答