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 相关文章推荐
Domino中运用jQuery读取视图内容的方法
Oct 21 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
js创建一个input数组并绑定click事件的方法
Jun 12 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
Nov 04 Javascript
js判断当前页面用什么浏览器打开的方法
Jan 06 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
layui实现table加载的示例代码
Aug 14 Javascript
echarts统计x轴区间的数值实例代码详解
Jul 07 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
extjs4图表绘制之折线图实现方法分析
Mar 06 Javascript
vue组件添加事件@click.native操作
Oct 30 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
PHP 程序员的调试技术小结
2009/11/15 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
php日期操作技巧小结
2016/06/25 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
2017/02/15 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
2015/02/04 Python
详解Python中 sys.argv[]的用法简明解释
2017/12/20 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
工商企业管理应届生求职信
2013/11/03 职场文书
商铺租赁意向书
2014/04/01 职场文书
初三班主任寄语大全
2014/04/04 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
乌镇导游词
2015/02/02 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL