首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

用new Image()事先加载图片真的有用吗

2012-11-23 
用new Image()预先加载图片真的有用吗?经常会用到在网页上交替显示图片。很多推荐的作法是用new Image() 预

用new Image()预先加载图片真的有用吗?
经常会用到在网页上交替显示图片。很多推荐的作法是用new Image() 预先装载图片。但是用new Image()真的有用吗?

试验:

在后台放一个过滤器捕捉所有 /* 的请求:

doFilter里面简单的打印请求的URL:




html代码:




可以看到打印了三次url。html页面的请求一次。t1.src设值的时候一次。<img src="">的时候一次。

我想这时候如果按按钮改变页面上的图片,应该不会再从服务端载图片了,因为缓存里面已经有了嘛。可是点的时候过滤器仍然是有打印出URL!

看来只要image对象的src一被改变就会发出请求。那预先装载图片不是等于没用吗?


1 楼 scud 2007-09-20   很多server(例如apache)会对请求进行分析, 如果根据 last modified time 判断文件没有改变, 则返回 "304 - 未修改".

请求相同的url并不表明传输回去的内容大小也相同 2 楼 sp42 2007-09-20   推荐CSS Background的方式 3 楼 hax 2007-09-20   你的测试有误。

new Image()绝对可以起到预取作用。

之所以你测试中会有新的请求,估计是以下原因之一:

A. 你的浏览器设置存在问题。例如在IE中默认是“自动”而你可能改成了“每次访问都检查网页更新”。

B. 你的服务器端程序有问题。例如发出了禁止Cache的头。

C. RPWT 4 楼 hax 2007-09-20   注意,IE其实存在图片缓存bug,但是通常它并不会导致一次新的请求,只是会产生多次的WinNET API调用,效果就是有轻微的闪烁。

此外,Filter(AlphaImageLoader)和VML的image,都分别存在一些缓存上的问题(Shame M$)。但是这里并没有涉及到。

热点排行