前天帮一个学弟看一个问题:在后台方法设置断点,不清空IE缓存的时候,无法走到断点处,于是得出结论是IE缓存的问题.于是提出了通过IE的自动清除缓存功能可以解决这个问题的结论,在这么做了之后问题依然没有得到解决,当时一怒之下让学弟改用谷歌浏览器,果然问题就消失了!然后,然后就是痛骂IE。
冷静之后想想,我们之前也用IE开发,但是并没有遇到这种问题,在仔细思考一番之后发现,事情可能没有那么简单。因为在AJAX请求里面并没有设置CACHE参数。碰巧今天看到一篇介绍AJAX缓存的问题。转载如下:
在IE8 9下,进行Ajax请求时,若与之前请求相同,则不会再从服务器获取数据,而是直接从本地获取。这样,在使用$.ajax时可以将其cache属性设置为false.
cache:
要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false将不会从浏览器缓存中加载请求信息。
1.全局设置
//$.ajaxSetup() 方法设置全局 AJAX 默认选项。 $.ajaxSetup({ cache: false });缓存并非是为了给我们带来麻烦而设置的,毕竟别的浏览器可以正常使用。所以,要为IE8 9单独设置禁用缓存中的信息。
//jquery 1.9.0后取消了$.browser if($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){ //做处理 }
在1.9.0之后可以使用$.support来判断
//IE事件拷贝 if(!$.support.noCloneEvent&&!$.support.noCloneChecked){ //做处理 }