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 相关文章推荐
js css样式操作代码(批量操作)
Oct 09 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
js检测判断日期大于多少天的方法
May 04 Javascript
jQuery纵向导航菜单效果实现方法
Dec 19 Javascript
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
Mar 16 Javascript
vue 表单输入格式化中文输入法异常问题
May 30 Javascript
vue-cli安装使用流程步骤详解
Nov 08 Javascript
Angular7.2.7路由使用初体验
Mar 01 Javascript
vue element-ul实现展开和收起功能的实例代码
Nov 25 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
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
超级实用的7个PHP代码片段分享
2012/01/05 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
总结PHP中数值计算的注意事项
2016/08/14 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
Firefox outerHTML实现代码
2009/06/04 Javascript
js url传值中文乱码之解决之道
2009/11/20 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
JS打字效果的动态菜单代码分享
2015/08/21 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
js实现网页收藏功能
2015/12/17 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
python中退出多层循环的方法
2018/11/27 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
linux面试题参考答案(1)
2016/01/22 面试题
数学系个人求职信范文
2014/01/30 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
留学生求职信
2014/06/03 职场文书
小学运动会班级口号
2014/06/09 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB
Redis数据同步之redis shake的实现方法
2022/04/21 Redis