网上看到一篇文章,链接在此:http://www.jb51.net/article/12354.htm
内容如下:
经常会用到在网页上交替显示图片。很多推荐的作法是用new Image() 预先装载图片。但是用new Image()真的有用吗?
试验:
在后台放一个过滤器捕捉所有 /* 的请求:
doFilter里面简单的打印请求的URL:
代码
HttpServletRequest httpRequest = (HttpServletRequest) request;
System.out.println("requets url: " +httpRequest.getRequestURI());
chain.doFilter(request, response);
html代码:
<body>
<script>
var t1 = new Image();
t1.src = 'ico_unchecked.gif';
function change(){
im.src = t1.src;
}
</script>
<button οnclick="change()">change</button>
<img id="im" src="ico_checked.gif">
</body>
可以看到打印了三次url。html页面的请求一次。t1.src设值的时候一次。<img src="">的时候一次。我想这时候如果按按钮改变页面上的图片,应该不会再从服务端载图片了,因为缓存里面已经有了嘛。可是点的时候过滤器仍然是有打印出URL!看来只要image对象的src一被改变就会发出请求。那预先装载图片不是等于没用吗?
Javascript部分其实应该这样:
<script>
new Image().src = 'ico_unchecked.gif';
function change(){
im.src = 'ico_unchecked.gif;
}
</script>
这样的话点击按钮时就不会再加载图片了。