web 缓存

今日在做Ajax的项目,发现一个问题:提交数据后,取不回提交的数据。郁闷多时,仔细分析,发现后台日志没有取数据的消息,前端也没有出现“正在读入数据”的提示。因此觉得应该是系统缓存的问题,遂google,解决。方法如下:  
   
  方法1:服务器端代码加入response.setHeader("Cache-Control",   "no-cache,   must-revalidate");  
   
  方法2:用JavaScript在Ajax提交的时候加入一个随机数作为URL中的一个参数。req.open(url   +   "&"   +   Math.random).  
   
  原因:IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据。  
禁止页面内容缓存:

  HTM 网页 

  <META   HTTP-EQUIV="pragma"   CONTENT="no-cache"> 

  <META   HTTP-EQUIV="Cache-Control"   CONTENT="no-cache,   must-revalidate"> 

  <META   HTTP-EQUIV="expires"   CONTENT="Wed,   26   Feb   1997   08:21:57   GMT"> 

  ASP 网页 

  <% 

      Response.Expires   =   -1 

      Response.ExpiresAbsolute   =   Now()   -   1 

      Response.cachecontrol   =   "no-cache" 

  %> 

  PHP 网页 

  header("Expires:   Mon,   26   Jul   1997   05:00:00   GMT"); 

  header("Cache-Control:   no-cache,   must-revalidate"); 

  header("Pragma:   no-cache"); 

  JSP 

          response.setHeader("Pragma","No-Cache"); 

          response.setHeader("Cache-Control","No-Cache"); 

          response.setDateHeader("Expires",   0); 

  C# 中禁止 cache 的方法! 

  Response.Buffer=true; 

  Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1); 

  Response.Expires=0; 

  Response.CacheControl="no-cache"; 



禁止图片缓存:

在图片后面加一个随机参数,如:

<img src=”images/bg.gif?temp_id=156404/>

你可能感兴趣的:(Web,Ajax,cache,IE,asp)