jQuery lazyLoad图片延迟加载插件的优化改造方法分享


Posted in Javascript onAugust 13, 2013

jQuery lazyLoad.js插件 是一款基于jquery框架,可以“实现”图片延迟加载的插件。请注意,我用了双引号,因为从我自己实际调试的结论来说呢,并不会延迟加载,而是先下载,然后通过改变<img>的src属性来隐藏原来的图片。
我们先来看看他的代码吧!

<script type="text/javascript" src="/static/jssrc/lazyload.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("#team_main_side img").lazyload({ 
placeholder : "/static/theme/xituan/img/img_loading.gif", 
effect : "fadeIn" 
}); 
}); 
</script>

工作原理是先在<img>下创建original属性,并把src属性值赋值给original,然后再把src的值修改成你设置的 placeholder的值。当滚动条到达图片位置时,再把original的属性赋值给src。这个时候向服务器发出一个HTTP请求,确认下有没有修 改,服务器返回一个304状态,等于本来一遍HTTP请求能完成的工作,它用了2遍,非但没有减少开支,还增加开销,我彻底无语了。(如下图,火狐的firebug显示)

jQuery lazyLoad图片延迟加载插件的优化改造方法分享

假如你使用过这个插件的话,你有没有发现,无论多大的图片,只要你的滚动条到达那个位置的话,图片就会很快的显示出来,有点不可思议吧。那是因为那张图片已经下载好了。
再者,我自己的想法,jquery的代码是在页面加载完成后才会执行的,那页面加载完的时候,图片较小的都下载完了,再执行jq代码的话,那种意义就不存在了。

那有问题肯定要解决,把这个插件的代码改一改。

好吧,开始了

打开这个jquery.lazyLoad.js,找到如下图第一个红框的代码,直接注释掉;第二个红框是需要自己手工添加上去的,然后保存。

jQuery lazyLoad图片延迟加载插件的优化改造方法分享

在页面插入图片的代码如
<img src="http://3water.com/upload/201010122047211034.jpg" alt=""/>
修改成
<img original="http://3water.com/upload/201010122047211034.jpg" src="http://3water.com/img/img_loading.gif" alt=""/>

最后记得插入js代码

[code]
<script type="text/javascript" src="/js/jquery.js"></script><!--jquery 包-->
<script type="text/javascript" src="/js/jquery.lazyload.js"></script><!--lazyload 插件-->
<script type="text/javascript"> //初始化代码
$(document).ready(function(){
$("#team_main_side img").lazyload({
placeholder : "http://3water.com/img/img_loading.gif",
effect : "fadeIn"
});
});
</script>

这样所有图片就都显示img_loading.gif了,由于都是请求的同一个图片,浏览器只会请求一次..对于减少服务器http请求来说,我们的目标已经达到了.当浏览器滚动到图片的位置时候,就会把图片加载进来。

Javascript 相关文章推荐
jQuery 名称冲突的解决方法
Apr 08 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
Mar 19 Javascript
JavaScript在XHTML中的用法详解
Apr 11 Javascript
JS求平均值的小例子
Nov 29 Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
原生js实现图片放大缩小计时器效果
Jan 20 Javascript
JS实现购物车特效
Feb 02 Javascript
Vue-Router实现页面正在加载特效方法示例
Feb 12 Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 Javascript
js setTimeout 参数传递使用介绍
Aug 13 #Javascript
js setTimeout 常见问题小结
Aug 13 #Javascript
删除select中所有option选项jquery代码
Aug 12 #Javascript
js获取本机的外网/广域网ip地址完整源码
Aug 12 #Javascript
JavaScript解析URL参数示例代码
Aug 12 #Javascript
JS实现Enter键跳转及控件获得焦点
Aug 12 #Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 #Javascript
You might like
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
php学习笔记之 函数声明
2011/06/09 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
微信公众号开发之微信公共平台消息回复类实例
2014/11/14 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
PHP中常用的数组操作方法笔记整理
2016/05/16 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
js DOM模型操作
2009/12/28 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
Python 获取当前所在目录的方法详解
2017/08/02 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
python ChainMap的使用和说明详解
2019/06/11 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
化工专业应届生求职信
2013/11/08 职场文书
大学生毕业的自我鉴定
2013/11/13 职场文书
个人创业事迹材料
2014/12/30 职场文书
中国世界遗产导游词
2015/02/13 职场文书
2015年宣传部个人工作总结
2015/05/14 职场文书
Golang实现可重入锁的示例代码
2022/05/25 Golang