我有一个jsp页面,引入了两个js文件
第一个js文件,压缩后大小为2M,第一次访问页面,20秒才显示出来,这个文件可能一两年才会修改一次,我希望浏览器一直缓存它
第二个js文件,大小为20K,这个文件经常一天要变动几次,我希望浏览器不要缓存它我这样的需求,该怎么实现呢?

解决方案 »

  1.   

    呵呵,压缩后2M的js,我还真没见过。
    不过那个20K的js也不算小啊。
    如果不想缓存,可以在引用的时候加上一个随机数。<script src="http://wwww.aaa.com/a.js?v=66116165"></script>
      

  2.   

    第一个js文件,压缩后大小为2M,第一次访问页面,20秒才显示出来,这个文件可能一两年才会修改一次,我希望浏览器一直缓存它
    —— 要配置 HTTP 头信息,提示浏览器缓存是长效的,常规套路是:
    Cache-Control:max-age=多少秒
    Last-Modified:设置为文件创建时间(也可以干脆写死)
    Expires:设置为当前时间一年后
    —— 更好点的套路是用HTTP1.1的新 HTTP 头:
    ETag:"文件MD5 或 文件大小"
    第二个js文件,大小为20K,这个文件经常一天要变动几次,我希望浏览器不要缓存它
    —— 类似上面所说,不过要配置缓存是无效的:
    Pragma:No-cache
    Cache-Control:no-cache
    Expires:-1
    配置方法主要两种:
    1、写Filter拦截该JS文件请求,然后:
    response.setHeader("Pragma","No-cache");    
    response.setHeader("Cache-Control","no-cache");    
    response.setDateHeader("Expires", -10);   
    2、借助Apache或其它Web服务器,进行反向代理时增加Header信息。
    参考:http://www.jdon.com/40381