jQuery lazyLoad图片延迟加载插件的优化改造方法分享_jquery

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的代码是在页面加载完成后才会执行的,那页面加载完的时候,图片较小的都下载完了,再执行jq代码的话,那种意义就不存在了。

那有问题肯定要解决,把这个插件的代码改一改。

好吧,开始了

打开这个jquery.lazyLoad.js,找到如下图第一个红框的代码,直接注释掉;第二个红框是需要自己手工添加上去的,然后保存。

在页面插入图片的代码如
<img src="http://jb51.net/upload/201010122047211034.jpg" alt=""/>
修改成
<img original="http://jb51.net/upload/201010122047211034.jpg" src="http://jb51.net/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://jb51.net/img/img_loading.gif",
effect : "fadeIn"
});
});
</script>

这样所有图片就都显示img_loading.gif了,由于都是请求的同一个图片,浏览器只会请求一次..对于减少服务器http请求来说,我们的目标已经达到了.当浏览器滚动到图片的位置时候,就会把图片加载进来。

时间: 2024-11-01 20:49:44

jQuery lazyLoad图片延迟加载插件的优化改造方法分享_jquery的相关文章

jquery.lazyload 图片延迟加载实例

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-

自己写jquery.lazyloading图片延迟加载插件,通用

jquery.lazyloading.js的作用/加载过程/原理/设计思路: 1.刚加载页面时只加载html,不加载图片,图片的src为空,把真实的图片路径放到data-original属性中,页面加载速度变快: 2.在页面加载完成之后,js初始化,把有data-original属性的图片再加一个<div></div>在外面,再创建一个隐藏的<img />标签,并且根据原图片的大小和位置计算loading图片的位置,把loading图片显示在中间: 3.判断window

jquery lazyload图片延迟加载原理(1/2)

现在这种图片加载延迟的效果主要是应用在图片比较多的站点了,像taobao这种商城类的,这个可以节省不少带宽资源,今天 我们就来讲讲如何利用jquery lazyload组件来实现只加载可视区域图片面. lazyload的难点在如何在适当的时候加载用户需要的资源(这里用户需要的资源指该资源呈现在浏览器可视区域).因此我们需要知道几点信息来确定目标是否已呈现在客户区,其中包括: 可视区域相对于浏览器顶端位置: 待加载资源相对于浏览器顶端位置. 在得到以上两点数据后,通过如下函数,便可得出某对象是否在

IE中jquery.form中ajax提交没反应解决方法分享_jquery

花了三个钟头,反复查,发现,原来是改了处理页面的返回头信息. 加上了 application/x-javascript ,ie8就不干活了. 如果是text/html,就行,或者不指定也行. 算bug不?让我问候一下写这段代码的ie开发人员吧. ajax的头信息,编码看来都要注意哎. ajax提交表单数据的方式介绍 Url参数提交数 复制代码 代码如下: <script type ="text/javascript" src ="../js/jquery.js"

jquery队列queue与原生模仿其实现方法分享_jquery

queue() 方法显示或操作在匹配元素上执行的函数队列. queue和dequeue的过程主要是: 用queue把函数加入队列(通常是函数数组)用dequeue将函数数组中的第一个函数取出,并执行(用shift()方法取出并执行)也就意味着当再次执行dequeue的时候,得到的是另一个函数了.同时也意味着,如果不执行dequeue,那么队列中的下一个函数永远不会执行. 对于一个元素上执行animate方法加动画,jQuery内部也会将其加入名为 fx 的函数队列.而对于多个元素要依次执行动画,

WordPress博客使用Lazyload 图片延迟加载功能

博客之前用的这个方法来延迟加载图片的,感觉上图片是延迟加载了.但这并不是真正的延迟,打开含有图片的页面时,还会加载所有的图片:另外jquery.lazyload.js最新代码已经改过了,再用以前的方法也失效了. 现在,大神们解决了此问题.原来 jQuery lazyload 插件说要把图片的地址写入 data-original 属性,loading 图片地址写入 URL 属性才能实现真正图片稍后载入(lazyload).也就是说要修改图片的html结构. 修改前: <img src="im

真正实现WordPress Lazyload 图片延迟加载实例

Lazyload 图片延迟加载误区代码安装 jquery.lazyload.js 是 jQuery 的插件,所以必须先载入jQuery,现在一般皮肤都会用到jQuery.没有的同学可以在 之间插入如下代码:  代码如下 复制代码 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 然

真正节省带宽的lazyload图片延迟加载

昨天我在用jquery  lazyload 那种是网站很流行的图片加载方法,但那种只是先把图片加载,再遍历把图片src给替换了,再把用户可视区别加载进来,如果这样我觉得就没必要了, 今天自己改写了一个能真正实现图片延迟或节省流量的做法,代码如下. --> <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-tra

Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件_jquery

从网上下载来的版本多多少少都有些BUG,尤其是加载后在IE6和IE7下图片闪动是个大问题,在网上查了很久,也没有找到相关的解决方案.没解决方案,就得发挥咱DIY的精神,自己想法解决,分析了BUG,理了理思路,结合前段时间我做弹出窗口特效的方法,解决了Jquery.LazyLoad.js的兼容问题,现将思路和方法与大家分享一下. 解决思路大致是两点,一是从LazyLoad本身的滤镜参数下手,发现有一个参数在IE6和IE7是可以用的,就是show,那么在IE6和IE7下用这个特效:二是IE8以上(包