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中this关键字(翻译+自我理解)
Oct 20 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
js中Math之random,round,ceil,floor的用法总结
Dec 26 Javascript
Bootstrap基本组件学习笔记之进度条(15)
Dec 08 Javascript
protractor的安装与基本使用教程
Jul 07 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
解决vue-cli创建项目的loader问题
Mar 13 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
Dec 11 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
一文帮你理解PReact10.5.13源码
Apr 03 Javascript
JavaScript实现复选框全选功能
Apr 11 Javascript
深入详解JS函数的柯里化
Jun 09 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实现cc攻击防御和防止快速刷新页面示例
2014/02/13 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
2017/06/23 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
基于Python实现文件大小输出
2016/01/11 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python decimal模块使用方法详解
2020/06/08 Python
python cookie反爬处理的实现
2020/11/01 Python
药学专业个人自我评价
2013/11/11 职场文书
开朗女孩的自我评价
2014/02/10 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
郭明义观后感
2015/06/08 职场文书
大学军训口号大全
2015/12/24 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL