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 相关文章推荐
JavaScript事件列表解说
Dec 22 Javascript
理解Javascript_05_原型继承原理
Oct 13 Javascript
jquery实现图片按比例缩放示例
Jul 01 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
Jquery实现纵向横向菜单
Jan 24 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
Dec 28 Javascript
jQuery替换节点元素的操作方法
Mar 18 jQuery
JS逻辑运算符短路操作实例分析
Jul 09 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
如何将Node.js中的回调转换为Promise
Nov 10 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
2016/10/22 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
Thinkphp模板没有解析直接原样输出的解决方法
2014/10/31 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
深入理解 Koa 框架中间件原理
2018/10/18 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python中的闭包用法实例详解
2015/05/05 Python
python编程线性回归代码示例
2017/12/07 Python
Django中间件工作流程及写法实例代码
2018/02/06 Python
用python编写第一个IDA插件的实例
2018/05/29 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
python实现图书借阅系统
2019/02/20 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Python的in,is和id函数代码实例
2020/04/18 Python
Python如何重新加载模块
2020/07/29 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
高一化学教学反思
2014/02/05 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
二年级学生期末评语
2014/12/26 职场文书
你会写请假条吗?
2019/06/26 职场文书