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 相关文章推荐
动态改变textbox的宽高的js
Oct 26 Javascript
用正则xmlHttp实现的偷(转)
Jan 22 Javascript
学习ExtJS(一) 之基础前提
Oct 07 Javascript
可选择和输入的下拉列表框示例
Nov 05 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
Sep 22 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
基于JavaScript实现轮播图代码
Jul 14 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
基于vue配置axios的方法步骤
Nov 09 Javascript
Vue源码解读之Component组件注册的实现
Aug 24 Javascript
vue登录注册实例详解
Sep 14 Javascript
微信小程序实现一个简单swiper代码实例
Dec 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
Windows中使用计划任务自动执行PHP程序实例
2014/05/09 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
JavaScript可否多线程? 深入理解JavaScript定时机制
2012/05/23 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
vue $set 给数据赋值的实例
2019/11/09 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
超市中秋节活动方案
2014/02/12 职场文书
护士医德医风自我评价
2014/09/15 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
实习单位推荐信
2015/03/27 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
教师节领导致辞
2015/07/29 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
Python加密技术之RSA加密解密的实现
2022/04/08 Python
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android