你还在用jquery.lazyload这个坑爹的图片分屏加载插件么?

标签: jquery lazyload 图片 | 发表时间:2011-10-15 12:56 | 作者:胡尐睿丶 小明
出处:http://www.cnblogs.com/

  百度搜索“图片分屏加载”,映入眼帘的就是jquery.lazyload,相信很多人用过,或许现在还在用,今天我就来说说这个插件的严重BUG。

  何为图片分屏加载?顾名思义,就是让图片出现在浏览器可视区域内时,才进行加载。好处就是当页面上图片过多时候,不需要一次性加载完,大大提高了友好性,也减轻的服务器的压力。

  关于jquery.lazyload的demo,大家可以看一下:demo

  我们发现,第一屏内的图片,是正常加载了,当滚动到第二张的时候,过了几秒,也渐显出来了,似乎没什么大问题。这时,我们用火狐的firebug再来观看下,当然为了确保测试稳定,我用金山卫士清空了浏览器缓存。

  

  看到了么?说好的分屏加载的效果呢?怎么还是有2个请求。第一屏就一张图片,但实际上已经把两张图片都加载好了。坑爹的还不仅如此,我们继续看,当我把滚动条滑动到第二张图片……

  纳尼?第三个请求出现了!!!我一共两张图片,用了jquery.lazyload居然要下载3张,不仅没有减轻服务器压力,反而增加了,这不明摆着坑爹嘛。

  之后,我看了下lazyload的源码,其实逻辑上都是OK了,把img的src里的值,存放到自定义的original属性里,当图片滚动到浏览器可视区域内时,再把original里的值赋回到src里,实现分屏加载。

  但问题就出在调用上,lazyload的调用方法是写在$().ready(function(){});里,如:

$().ready(function(){
	$("#tujie img").lazyload({
		effect : "fadeIn",
		failurelimit : 5
	});
});

  也就是在页面载入完毕后才调用lazyload,而页面载入完毕后,图片也都下载好了,再去使用lazyload已经没有必要,反而就会出现上面说的那种情况:一共只有2张图片,却向服务器请求了3次,下载了3张图片,适得其反。

  网上有篇修改jquery.lazyload的文章,大家可以搜搜,不过我试了下,还是不行,直接不加载了。

  关于这问题的解决方法,就是换插件,我找到另一个分屏加载的插件,叫:jquery.scrollLoading,具体说明可以看下这篇文章《jQuery页面滚动图片等元素动态加载实现》,这个插件真正实现了图片分屏加载。

  PS:demo页面如果打不开了,可以下载这个demo包,不过测试需要放到服务器上去,本地直接打开,firebug里看不到3次请求的效果。demo点击下载

作者: 胡尐睿丶 发表于 2011-10-15 12:56 原文链接

评论: 13 查看评论 发表评论


最新新闻:
· iPad 3将于明年3月正式发布,产量将有所增加(2011-10-16 01:12)
· 营造类似黑客帝国360度旋转特效的全景照相机(视频)(2011-10-16 01:11)
· 50 人的 Google 自动驾驶汽车团队已经在跟主流汽车厂商讨论生产真车(2011-10-16 01:10)
· 三星律师未能在法庭上区分出iPad和Galaxy Tab(2011-10-16 01:10)
· Facebook变更用户量统计方法 Zynga受影响(2011-10-15 18:32)

编辑推荐:那些曾伴我走过编程之路的软件

网站导航:博客园首页  我的园子  新闻  闪存  小组  博问  知识库

相关 [jquery lazyload 图片] 推荐:

背景图延迟加载(lazyload)技术

- - Web骇客
图片延迟加载技术目前已经被各种网站广泛的使用,但最近的一篇《 PS美女试验的惊人结果 》文章中使用的却是背景图延迟加载技术. 为什么要使用背景图延迟加载技术. 之所以使用图片延迟加载技术,是为了避免浪费带宽. 有些页面上嵌入了很多图片(上面所说的《 PS美女试验的惊人结果 》里就嵌入了30多张高清美女图),但电脑的屏幕一次只能显示一张或顶多2张.

jQuery图片剪裁插件 Jcrop

- - 博客园_首页
Jcrop是一个jQuery插件,它能为你的WEB应用程序快速简单地提供图片裁剪的功能. 对所有图片均unobtrusively(无侵入的,保持DOM简洁). 支持 minSize / maxSize设置. 支持改变选区或移 动选区时的回调(Callback). 通过API创建互 动,比如动画效果.

精于图片处理的10款jQuery插件

- DayuLu - UED TEAM,用户体验设计,web前端开发
这篇文章将重点介绍用于图片处理的10个超级jQuery插件,可以生成图片的动画和特效,缩放图片大小等等. 这个插件非常有趣,可以用来缩放图片,旋转对象(3D特效). 可以用来变换图片:旋转,变换倾斜角度,调整图片大小(通常情况下可以和DIV共用). 这个插件可以用来对比两张图片的前后变化. 这个插件可以把你的文字情绪转化成笑脸表情(纯粹的CSS,没有图片).

用于图片处理的10个超级jQuery插件

- M.Li - ITeye资讯频道
这篇文章将重点介绍用于图片处理的10个超级jQuery插件,可以生成图片的动画和特效,缩放图片大小等等. 这个插件非常有趣,可以用来缩放图片,旋转对象(3D特效). 可以用来变换图片:旋转,变换倾斜角度,调整图片大小(通常情况下可以和DIV共用). 这个插件可以用来对比两张图片的前后变化. 这个插件可以把你的文字情绪转化成笑脸表情(纯粹的CSS,没有图片).

jQuery 图片播放插件 FancyBox 和其 WordPress 插件

- Outman - 我爱水煮鱼
FancyBox 是一个 jQuery 图片播放插件,它可以使用类似于 MAC 系统中 “Lightbox” 方式在网页前面浮动显示和播放图片,网页内容,或者其他多媒体内容. 支持图片,HTML 元素,Flash 动画,Iframe 以及 AJAX 支持. 可以自定义播放器和 CSS 样式. 如果加载了鼠标滚动插件(mouse wheel plugin),FancyBox 还支持通过鼠标滚动事件来翻阅图片.

延迟加载图片的 jQuery 插件:Lazy Load

- - 我爱水煮鱼
网站的速度非常重要,现在有很多网站优化的工具,如 Google 的 Page Speed,Yahoo 的 YSlow,对于网页图片,Yahoo 还提供 Smush.it 这个工具对图片进行批量压缩,但是对于图片非常多的网站,载入网页还是需要比较长的时间,这个时候我们可以使用 Lazy Load 这个 jQuery 插件来延迟加载图片.

jQuery 图片放大镜效果插件:jQZoom

- - 我爱水煮鱼
在一些产品演示网站,常常需要这样的效果,把鼠标移到小图的上面,旁边出现这这部分的放大效果,通过这种方式让用户能够详细了解产品的细节. jQZoom 就是这样的一个 jQuery 插件,它能够让你网站的图片实现放大镜效果,把鼠标移到小图上,旁边出现大图的局部放大的部分,如下演示:. RSS 用户需要返回页面才能看到效果.

最佳6款用于移动网站开发的 jQuery 图片滑块插件

- - 博客园_梦想天空
  随着智能手机的普及,越来越多的用户喜欢通过手机中浏览网页. 今天这篇文章为大家推荐最佳6款用于移动应用的. jQuery 图片滑块插件,这些插件很好的处理了触屏事件,效果平滑,帮助你构建用户体验良好的移动网站. PhotoSwipe 是一款免费的. jQuery 图片库插件,支持 iPhone, iPad, Android, Blackberry 等各种移动设备.