运维

当前位置:永利皇宫463登录 > 运维 > 私下数脚本,唯独ie浏览器缓存ajax央求

私下数脚本,唯独ie浏览器缓存ajax央求

来源:http://www.makebuLuo.com 作者:永利皇宫463登录 时间:2019-11-28 21:54

如果数据改变了,而没加随机数,读取的数据会跟之前一样。

浏览器缓存问题, 我设置了不让浏览器缓存 ,可是浏览器不听话,怎办?

对页面上引用的JS和CSS都无效啊,想要立刻生效可以在js文件后面加版本号比如
<script src="1.jsp?v=2012111901"></scipt> 每修改一次把版本号修改下  

script type="text/javascript" //为了兼容高版本chrome浏览器,此处不能读取缓存,故采用家随...

返回数据时增加一个no-cache的头部。

看到别人写的JS,ajax请求地址后加随机参数,比如XXXX?t= + new Date。

怎让一个链接过来,不让浏览器读取缓存

% response.setHeader( Cache-Control , no-cache ); //HTTP 1.1 response.setHeader( Pragma , no-cache ); //HTTP 1.0 response.setDateHeader ( Expires , 0); //prevents caching at the proxy server % 把这个加到登录后的那个页面; 禁用IE 缓存 HTTP 消息报头包括普通报头、请求报头、响应报头、实体报头。 请求时的缓存指令包括:no-cache(用于指示请示或响应消息不能缓存)、no-store、max-age、 max-stale、min-fresh、only-if-cached; 响应时的缓存指令包括:public 、private 、no-cache 、no-store 、no-transform 、 must-revalidate、proxy-revalidate、max-age、s-maxage。 例:为了指示IE 浏览器(客户端)不要缓存页面,服务器端的jsp 程序可以编写如下: response.setHeader(“Cache-Control”, “no-cache”); //response.setHeader(“Pragma”, “no-cache”);作用相当于上行代码,通常两者合用 Expires 实体报头域给出响应过期的日期和时间。  

$.get(url,{ "r": new Date().getTime() }, function(res){   //每次的请求不一样,浏览器就不会使用缓存
  console.log(res);
});
//Or
$.ajaxSetup({         //对全局的ajax方法进行配置,后续的ajax请求都会使用该参数
      //禁用缓存
    cache: false
});

一开始搞不懂为什么,网上查了资料,原因是防止浏览器缓存。

加随机数引入脚本不让浏览器读取缓存,随机数脚本

<script type="text/javascript"> 
   //为了兼容高版本chrome浏览器,此处不能读取缓存,故采用家随机数方式引入脚本 
   document.write("<s" + "cript type='text/javascript' src='../../Scripts/KindEditor/Editor/kindeditor-min.js?" + Math.random() + "'></s" + "cript>"); 
</script>

客户端:

加上随机数,就是欺骗浏览器url改变了,会每次都向服务器发送请求而不去读缓存

 服务器端:

有时候会导致浏览器不发送请求,直接从缓存中读取之前的数据。

解解方法:

浏览器为了提高用户访问同一页面的速度,会对页面数据进行缓存。当url请求地址不变时,

用fiddler调试http请求,在ie浏览器下,如果请求命中缓存,fiddler不会包含该请求。但是在chrome下会包含缓存的请求,Result显示为304。

ie浏览器还会缓存通过ajax请求的数据,导致后续ajax的请求数据不能更新。实际上是只缓存get方式的请求,post方法因为每次的数据不一样,所以不会被缓存。

本文由永利皇宫463登录发布于运维,转载请注明出处:私下数脚本,唯独ie浏览器缓存ajax央求

关键词:

上一篇:没有了

下一篇:没有了