JavaScript,将相同的图像源设置为不同的图像(预加载)
JavaScript, set same image source to different images (preload)
对不起,标题可能不正确。。我有下一个问题:我想用进度条进行预加载。我只解决了一个问题。
[代码1]:
//Preloader code
var img = [];
img[0] = new Image();
img[0].src = 'test0.jpg';
img[0].onload = function(){
//some code
}
//.....
img[100] = new Image();
img[100].src = 'test100.jpg';
img[100].onload = function(){
//some code
}
//.....
// all images loaded
//.....
/*
for expample in this part of code I need put my image 'test0.jpg' into html
*/
var temp_img = new Image();
temp_img.src = 'test0.jpg';
问题是:它会再次下载"test0.jpg"还是只是从缓存中获取?
或者最好这样做[代码2]:
//Preloader code
var img = [];
img['test0'] = new Image();
img['test0'].src = 'test0.jpg';
img['test0'].onload = function(){
//some code
}
//.....
img['test100'] = new Image();
img['test100'].src = 'test100.jpg';
img['test100'].onload = function(){
//some code
}
//.....
// all images loaded
//.....
/*
for expample in this part of code I need put my image 'test0.jpg' into html
*/
var temp_img = img['test0'];
// draw temp_img
我想使用代码1。但它会减慢我的应用程序的速度吗?还是最好使用代码2?提前谢谢。
这两种方法都有优点和缺点。
第一种方法在图像元素上要轻得多,通常情况下,生成的DOM元素越少越好。不过,根据加载的信息量,浏览器可能不会提供缓存中的图像。最糟糕的情况是,如果浏览器已从缓存中删除图像,则需要再次从网络中获取。
第二种方法要安全得多,可以将图像保存在内存中,这意味着即使浏览器不缓存图像,它仍然可用。不过,它在图像元素上更重。
哪种解决方案更好取决于您的情况。如果你没有加载大量的图像,我认为解决方案1是更好的选择,因为它利用了浏览器的缓存。不过,如果你真的负担不起从网络上重新加载图像的费用,解决方案2会更安全。
TL;DR解决方案1不应该降低应用程序的速度,但解决方案2将确保您不会再次从网络中获取。
如果使用代码1,您的预加载程序将毫无用处,对吧?我会选择2个
相关文章:
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 在检索数据时是否可以停止图像加载请求
- 如何让我的网站上的WEBP图像加载在morzilla firefox中有一个可能的解决方案吗?如果是,那么如何
- jQuery:获取图像加载错误的详细信息
- 在safari和chrome中,js图像加载产生了奇怪的结果
- 图像加载不适用于 IE 8 或更低版本
- 这个图像加载功能有什么作用
- JavaScript 图像加载器不起作用
- 动态图像加载是否会减少服务器过载
- 跨来源图像加载被拒绝-仅限iPhone-简单图像上传
- 纯javascript的进度图像加载程序仅当用户单击提交html表单时
- 使用JavaScript延迟图像加载
- 如果当前图像加载缓慢,如何加载其他图像
- HTML图像加载触发一个错误
- 将图像加载到localStorage,并将图像src设置到该位置
- jquery图像加载检查错误
- 将图像加载到织物画布背景中
- 需要在bootstrap css中单击时将图像加载为模态
- 正在显示加载..在将新图像加载到网站时播放动画
- 砖石事件:在图像加载和布局完成后调用事件