2009年9月7日星期一

[note] Ajax 在IE的缓存bug

IE的缓存bug:在重复请求(GET)同一个页面的时候,IE会只会请求第一次,第二次将使用之前的缓存。理论上讲,IE的GET方法应该是获得静态的链接。但是网络发展迅速,例如REST风格的设计中GET方法获得的不是静态的链接。这时IE的缓存就会成为一个严重的问题。(Firefox没有这个问题)

解决方法:
       1、在服务端加 header("Cache-Control: no-cache, must-revalidate");

  2、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");

  3、在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");

  4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了

  5、第四种方法和第三种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime(); //推荐使用这种方式

  6、用POST替代GET:不推荐

没有评论: