在网站开发过程中,我们会遇到这样的问题:每次更行css,js文件,都需要清理流量器缓存,现在提供几种解决方法:

1.对于Ajax  的请求(不管是静态数据还是动态数据):

//以下三种方法使用其中任何一种方法都可以

  1. xmlhttp.setRequestHeader("Cache-Control","no-cache");    

//或者

  1. xmlhttp.setRequestHeader("If-Modified-Since","0");

//或者

  1. xmlhttp.Open(url+‘?rnd=‘+Math.random(),....); 

如果使用  prototype.js    ,  用类似这样的代码  :
 

  1. new  Ajax.Request(url,{method:"get",requestHeaders:["Cache-Control","no-cache"]}); 
  2. //或者 
  3. new  Ajax.Request(url,{method:"get",requestHeaders:["If-Modified-Since","0"]}); 

2.对于css,js文件处理

因为css,js  是通过  <script  src=....>  这种方式加载的,所以,很难使用  asp  的那种服务器端禁止缓存的办法。也很难使用ajax的通过设置  http请求头的办法禁止使用缓存。

看来随机数是个好办法。

  1. //方法一: 
  2. document.write("<script  src=‘test.js?rnd="+Math.random()+"‘></s"+"cript>"); 
  3.  
  4. //方法二: 
  5. var  js=document.createElement("script"); 
  6. js.src="test.js"+Math.random(); 
  7. document.body.appendChild(js); 

但是,如果采用随机数的话,  js文件将永远得不到缓存,每次都必须重新从服务器加载,即使没有任何更改。
大家如果经常上国外网站的话,可以看到他们通常采用这样的方式来解决:

  1. <script  src="test.js?ver=113"></script> 


其中  ver=113  的  113就是版本号,一般都是采用  CVS  或其他工具生成的开发版本号。

这样真正做到了应该缓存的时候缓存静态文件,当版本有更新的时候从获取最新的版本,并更新缓存。
对于图像  <img  src="test.jps?ver=在CVS的版本号">  来有效利用和更新缓存.