IE浏览器自动加载修改后的js文件或者jsp文件原理不同。
1、热部署jsp:
Tomcat jsp热部署的实现原理大体是这样的,每个JSP页面从上次访问到下次访问总是有默认几秒的缓存时间的,也就说并不是严格的即修改即生效,tocmat7默认是有4秒的缓存延迟的。这个默认的缓存延迟是在类EmbeddedServletOptions的private intmodificationTestInterval = 4;这个属性定义的。如果过了4秒缓存时间即失效,这个时候tomcat就会读取jsp的modified时间戳和work目录下编译好的class文件的modified的时间戳作对比。如果相等则class文件没有过期,则不会重新编译jsp文件,如果过期了则重新将jsp编译成java,并进一步编译成class。同时调用JasperLoader来重新加载这个有jsp编译好的class文件。
2、js修改后需要在后面加版本号才能自动加载
定义时间戳:
public final static SYSTEM_STARUP_TIME = System.currentTimeMillis();
比如
无非就是缓存的事,破解之道如下:
一是在页面头部写代码强制浏览器获取每次都获取新内容,而不读取缓存。就几行代码,网上一抓一大把;
二是对图片、css文件和js文件,可以在加载的时候给一个时间戳作为参数,以确保浏览器每次都发出请求而不是读取缓存