缓存控制: IE主动缓存

      我们偶尔可能会遇到这样一个问题,即当页面后的数据更新时,页面却没有反映这种更新.因为,为了节省时间,浏览器会在本地缓存页面,然后从缓存中找出该页面而不是重载该页面.这一问题在IE中非常常见,因为除非用户强制不缓存页面,否则IE会自动缓存页面.

 

      该问题的通常解决办法是, 在页面中插入以下代码:

      <meta http-equiv="Pragma" content="no-cache" />

      <meta http-equiv="Expires" content="-1" />

 

      这足以强制浏览器重载该页面.但如果使用 XMLHttpRequest 对象,且请求中包含 GET 指令,那么IE 将始终缓存该页面,而绝不会重载该页面.

 

      这个问题有 3 种解决办法.

      第一种, 在 GET 请求后添加 querystring, 并确保添加的内容在每次运行时都不一样. 如下:

      xHRObject.open("GET", "display.php?id=" + Number(new Date) + "&value=" + data, true);

 

      第二种, 设置 HTTP 头部的 If-Modified-Since 为引用过去的一个日期:

      xHRObject.open("GET", "display.php?value=" + data, true);

      xHRobject.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");

 

      第三种, 使用 POST 请求.

      var bodyofrequest = "value=";

      bodyofrequest += encodeURIComponent(data);  //data is the actual arguments that you want to send

      xHRObject.open("POST","display.php",true);

      xHRObject.setRequestHeader("Content-Type","application/x-www-from-urlencoded");

      //getData is the Callback function which is binded to readystatechange event

      xHRObject.onreadystatechange = getData; 

      xHRObject.send(bodyofrequest)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值