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 事件执行检测代码
Dec 09 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 Javascript
Ionic 2 实现列表滑动删除按钮的方法
Jan 22 Javascript
jquery仿苹果的时间/日期选择效果
Mar 08 Javascript
vue实现app页面切换动画效果实例
May 23 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
详解vue-cli3 中跨域解决方案
Apr 10 Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 Javascript
vue学习笔记之作用域插槽实例分析
Feb 01 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
如何使用php输出时间格式
2013/08/31 PHP
php实现分页工具类分享
2014/01/09 PHP
深入理解JavaScript系列(13) This? Yes,this!
2012/01/18 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
vue实现文件上传读取及下载功能
2020/11/17 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
浅谈vue中document.getElementById()拿到的是原值的问题
2020/07/26 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
Python自动重试HTTP连接装饰器
2015/04/28 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
python如何查看微信消息撤回
2018/11/27 Python
对python3新增的byte类型详解
2018/12/04 Python
Python3.5装饰器典型案例分析
2019/04/30 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
Python实现Keras搭建神经网络训练分类模型教程
2020/06/12 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
葡萄牙语专业个人求职信
2013/12/10 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
写给领导的感谢信
2015/01/22 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书