更新页面DOM后,如何修改浏览器缓存?

时间:2011-03-08 08:46:37

标签: ajax browser-cache

到目前为止,我知道我可以使用AJAX分离静态和动态内容,因此如果博客文章有评论更新,那么文章不必重新加载(它是304),只需要评论。现在,我正在考虑保留所获取的动态内容,以便下次只需要请求新的注释。有没有办法在不依赖Flash / Gears / HTML5Storage或其他插件的情况下做到这一点?

编辑: 假设文章的评论部分如下所示:

<div class='comments' id='comments'>
 <a name='comments'></a>
 <h4>43 comments:</h4>
 <dl id='comments-block'></dl>
 <p class='comment-footer'>
  <a href='http://example.org/postcomment' onclick=''>Post a Comment</a>
 </p>
</div>

在其上,用于获取评论的AJAX调用会将它们附加到<dl id='comments-block'>,其中包含以下代码段:

<div class='comments-singleblock'>
  <dt class='comment-author' id='comment-5378479254070788764'>
    <a name='comment-5378479254070788764'></a>
      Anonymous coward
      <span class='comment-timestamp'>
        <a href='#comment-5378479254070788764' title='comment permalink'>
           5 February 2012 16:52
        </a>
      </span>
    </a>
  </dt>
  <dd class='comment-body'>
    <p>
      Your lorum is my ipsum, the dolor is sit amet us.
    </p>
  </dd>
  <dd class='comment-footer'>
    Which eternal lies, that is not death.
  </dd>
</div>

可以缓存。随后的AJAX调用应仅返回新内容,并附加到上面。 现在加载文章时,逻辑就是这样

  1. 没有时间戳的第一个AJAX注释调用:获取所有注释直到当前时间戳A.这是缓存的。
  2. 在新时间戳B上,时间过去,在时间戳A之后向服务器发送请求以进行注释。此调用可以被缓存,但是没有意义,因为请求URL永远不会被重用。
  3. 客户端现在已经更新了评论,直到时间戳B.但是只有高速缓存时间戳A的内容才会被缓存。
  4. 客户端刷新文章,该文章提示没有时间戳的第一条评论请求,该评论应返回缓存的评论,直到时间戳A。
  5. 所以问题是如何修改缓存内容以包含时间戳A和B之间的内容。

1 个答案:

答案 0 :(得分:1)

创建一个局部变量来存储ajax调用的JSON结果。

创建一个局部变量来存储Max_Last_Modified_Date。

创建一个将绘制JSON结果的javascript助手。

创建一个服务器端处理程序,告诉你你的评论的MAX(LastModifiedDate)。

创建一个服务器端处理程序,它将返回JSON中的注释

  • 所有结果(首次获取)
  • Max_Last_Modified_Date之后修改日期的任何内容。