微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

到目前为止,我知道我可以使用 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调用应仅返回新内容,并附加到上面.
现在加载文章时,逻辑就是这样

>没有时间戳的第一次AJAX注释调用获取所有注释直到当前时间戳A.这是缓存的.
>时间在新时间戳B上传递,在时间戳A之后向服务器发送请求以进行注释.此调用可以被缓存,但是没有意义,因为请求URL永远不会被重用.
>客户端现在已经更新了注释,直到时间戳B.但是只缓存了时间戳A之前的内容.
>客户端刷新文章,该文章提示没有时间戳的第一个评论请求,这应该返回缓存的评论,直到时间戳A.

所以问题是如何修改缓存的内容包括时间戳A和B之间的内容.

解决方法

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

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

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

创建一个服务器端处理程序,它将告诉您评论的MAX(LastModifiedDate).

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐