重图像预加载是挂脚本
Heavy image preloading is hanging script
我在一个具有高分辨率图像(如1280x1400px)的客户端的图像库中工作,实际上我的脚本是这样做的:
- 加载第一个图像并显示它
- 当第一张图片加载时,加载该图库的所有缩略图(每个200x440px或类似的大小)
- 当所有的缩略图加载开始缓存所有的图像(顺序)从缩略图(我的意思是完整的分辨率图像),所以当用户选择列表上的第二个图像,它已经预加载
问题是,当缩略图中的第二张图片开始预加载时,浏览器真的很慢,感觉就像要挂起一样,似乎占用了太多的内存或cpu,我真的不知道。
是否有办法像并行一样预加载它?或者另一种"快速加载"图片库的方式?我一直在考虑有2个版本的每个图像一个非常低的分辨率一个用作占位符,然后加载真实的图像并替换它(我认为这是如何Google +画廊的作品)
我的主要目标是有一个非常非常快的图库,因为它可以有点慢,当用户点击一个图像(每个文件是200~300kb)
谢谢
如何在缩略图中使用CSS精灵技术?这将允许你有一个包含所有缩略图的大图像。
预加载所有图像的方法似乎有点笨拙(没有人担心带宽使用?)。为了快速交付,您可以使用商业CDN(内容交付网络)来托管它们。
Richard Ev给出了一个很好的答案。我想添加另一种可能有用的内容交付技术,即在多个子域上传播资源。最好的解释(包括限制等)可以在这里找到,但是这个IE链接和这篇论文也很值得一读。
本质上是由于浏览器的限制,实现旧的HTTP标准,图像下载不高并行(或任何内容的问题-标准是量化打开的连接),但你可以欺骗浏览器打开更多的连接,通过分散资源传递到多个子域。正如文章中提到的,这种传播有一个上限,超过这个上限,它实际上就会减慢。
希望这篇文章能有所帮助(可能是相关的,也可能不是相关的),或者至少能教会你一些新的东西。
提供您如何尝试预加载图像的示例?并行预加载多个图像的最简单示例是
<script type="text/javascript">
var photos = ["/images/foto1.jpg", "/images/foto2.jpg", "/images/foto3.jpg"];
var images = new Array();
for(var i = 0; i < photos.length; i++)
{
images[i] = new Image();
images[i].src = photos[i];
}
</script>
相关文章:
- Joomla异步脚本加载jdoc头
- 将自定义脚本加载到Vue.js组件中
- 延迟加载 脚本加载和/或执行
- 脚本加载问题
- I'当我试图将java脚本加载到web视图中时,我得到了一个空白屏幕
- 脚本加载脚本广告
- 当我有一个脚本数组时,如何等待脚本加载
- 将Dropbox API脚本加载到chrome扩展时出错
- 异步脚本加载
- 一旦第三方脚本加载失败,立即运行一段JavaScript
- 有没有办法阻止脚本加载两次?JavaScript
- 无法使用 AJAX 将脚本加载为纯文本
- 我怎样才能说服WebStorm我的用户脚本加载jQuery
- 需要JS脚本加载顺序
- 处理不同设备的页面中的脚本加载
- 显示加载 gif,直到脚本加载完毕
- jQuery Mobile pageinit,脚本加载和其他东西
- IE11 脚本加载不起作用(有时)
- 有条件地将内容脚本加载到 Safari 扩展中,就像在 FF/Chrome 中一样
- 如何在Chrome开发工具中找到以下脚本加载时间线