使用jQuery remove()和缓存页面(Rails后端)

时间:2011-04-12 04:02:01

标签: javascript jquery ruby-on-rails ruby-on-rails-3 browser-cache

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

  1. 用户看到对其帖子发表评论并希望将其删除
  2. 用户点击删除按钮并删除数据库中的评论
  3. jQuery使用remove()从DOM中删除项目,作为对上面第2步的AJAX成功响应
  4. 用户导航到其他页面
  5. 用户点击后退按钮返回带有评论的页面
  6. 旧评论仍然存在,即使它已从服务器和DOM中删除
  7. 此方案中的注释显然是由浏览器缓存的,因此即使先前已删除它也会显示(并且它在服务器上也不存在)。

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

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

3 个答案:

答案 0 :(得分:0)

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

答案二:它有点沉重,但您可以在$(document).ready()中尝试ajax调用来检查过时的内容。我不确定那会起作用。如果没有,您可以设置ping到服务器的间隔,以便仔细检查屏幕上是否有过时的内容。 (我的表现很好,平均频率为7秒)

我认为没有非重手的方法(除了防止缓存;)

答案 1 :(得分:0)

我不知道什么时候它取决于浏览器,它可能会破坏您的RESTful路由,但您可以做的是对帖子来源的相同 URL发出PUT / POST,并在AJAX响应中禁用缓存(使用Cache-Control标头)。它应该在浏览器的缓存中使此URL无效,因为浏览器通常不会使用HTTP谓词进行区分。

答案 2 :(得分:0)

如果您使用的是rails页面缓存,则应在“创建”,“更新”和“删除”操作中将其清除。有关详细信息,请参阅link