我想在我正在构建的网页上做一些性能改进,并且我正在做的事情之一是使用JavaScript,下载通过创建Image()
对象来创建图像,并将其src
属性设置为给定的URL。Javascript下载图像一次设置两个图像标记的src
我再经手onload
事件的对象,并在处理程序中,我使用的对象src
属性设置页面上的两个<img>
元素src
属性。我是希望这样做只会下载图像一次,然后使用该下载的图像作为页面上的两个图像元素的src
,但这似乎并没有发生。
从我通过使用Firebug和Google Chrome开发工具查看网络信息可以看出,设置页面上两个图像元素的src
属性似乎导致实际下载图像两次,每次一组。
它的图像相同,而且相当大...所以下载起来非常耗时。有没有一种方法可以强制图像只下载一次?这里是我的代码:
var image = new Image()
image.onload = function() {
$('#img1').attr('src', image.src);
$('#img2').attr('src', image.src);
image = null;
}
image.src = 'my/image/url';
UPDATE:这是什么原因造成我相信,图像被下载两次。再说一遍......我可能是错的,也许这是误导性的,但是如果Chrome开发工具在网络标签上报告两个不同的“资源”,每个都有相同的路径,相同的文件大小,但不同的时间,表明其实际下载了两次?也许我的问题是我使用,我不知道开发者工具...
只是好奇,从你的代码它看起来不像图像的变化。你有没有考虑过这样做不是用jQuery,而是用一些CSS操作? – skyburner 2012-02-03 19:33:02
是什么让你认为图像会被多次下载?浏览器将下载图像并将其放入缓存中。如果在网页上再次出现相同的图像,它将从缓存中加载。 – 2012-02-03 19:48:15
@skyburner:我没有考虑过,但这只是我的代码的一小部分。这些图像中的每一个实际上都会被操纵,并且每个图像都被页面上的其他jQuery插件所占用,所以我不认为这会是这种情况的一种选择。谢谢你的想法。 – 2012-02-03 19:48:41