IE缓存策略带来的问题

  今天测试在ie11中发现新工单中提交到下一环节后,上一个环节还是原来的样子。因为这一块涉及了好几个接口,然后业务逻辑又比较复杂,同时因为谷歌下是正常的,所以我一开始就排除了是数据的问题,这让我几乎浪费了一天。。。
  请教同事后才发现原来IE对同一个get请求,如果请求的参数是没有发生变化的话,默认会用缓存(尽管此时浏览器请求的接口是返回200而不是304),(同时我发现如果打开调试工具,则默认会勾选 从服务器读取最新数据,但是如果没打开调试工具,则是按照上面说的缓存策略执行)最后在请求中加上如下代码即可解决:
  xhr.setRequestHeader(‘Cache-Control’,’no-cache’);
  xhr.setRequestHeader(‘Pragma’,’no-cache’);

  其实有另外一种方法就是在请求后加一个时间戳,但是这种方式使得缓存不可用,而且这样可能需要在好几个特定的请求中去写一些额外的代码。

  感觉IE真是不好惹,但是下次排查这种还是得从接口去入手,如果觉得接口不熟悉,可以先询问对这块比较熟悉的人,这样可以大大提高效率。