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.validate使用攻略 第二部
Jul 01 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 Javascript
javascript的数组和常用函数详解
May 09 Javascript
前端必备神器 Snap.svg 弹动效果
Nov 10 Javascript
js实时获取并显示当前时间的方法
Jul 31 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
bootstrap输入框组使用方法
Feb 07 Javascript
JS中的事件委托实例浅析
Mar 22 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
Nov 05 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
May 07 Javascript
js实现图片跟随鼠标移动效果
Oct 16 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 fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP explode()函数的几个应用和implode()函数有什么区别
2015/11/05 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
js 链式延迟执行DOME
2012/01/04 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
详解解决Vue相同路由参数不同不会刷新的问题
2018/10/12 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
python进阶教程之文本文件的读取和写入
2014/08/29 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
python3 实现调用串口功能
2019/12/26 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
Python如何测试stdout输出
2020/08/10 Python
如何快速一次性卸载所有python包(第三方库)呢
2020/10/20 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
财政专业求职信范文
2014/02/19 职场文书
揭牌仪式主持词
2014/03/19 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书