当前位置: 代码迷 >> Java Web开发 >> 浏览器缓存的高阶有关问题
  详细解决方案

浏览器缓存的高阶有关问题

热度:1947   发布时间:2013-02-25 21:12:15.0
浏览器缓存的高阶问题
我有一个jsp页面,引入了两个js文件
第一个js文件,压缩后大小为2M,第一次访问页面,20秒才显示出来,这个文件可能一两年才会修改一次,我希望浏览器一直缓存它
第二个js文件,大小为20K,这个文件经常一天要变动几次,我希望浏览器不要缓存它

我这样的需求,该怎么实现呢?

------解决方案--------------------------------------------------------
google: html5+manifest
------解决方案--------------------------------------------------------
呵呵,压缩后2M的js,我还真没见过。
不过那个20K的js也不算小啊。
如果不想缓存,可以在引用的时候加上一个随机数。

<script src="http://wwww.aaa.com/a.js?v=66116165"></script>
------解决方案--------------------------------------------------------
第一个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
  相关解决方案