zoukankan      html  css  js  c++  java
  • 转载:你还在用jquery.lazyload这个坑爹的图片分屏加载插件么?

    百度搜索“图片分屏加载”,映入眼帘的就是jquery.lazyload,相信很多人用过,或许现在还在用,今天我就来说说这个插件的严重BUG。

      何为图片分屏加载?顾名思义,就是让图片出现在浏览器可视区域内时,才进行加载。好处就是当页面上图片过多时候,不需要一次性加载完,大大提高了友好性,也减轻的服务器的压力。

      关于jquery.lazyload的demo,大家可以看一下:demo

      我们发现,第一屏内的图片,是正常加载了,当滚动到第二张的时候,过了几秒,也渐显出来了,似乎没什么大问题。这时,我们用火狐的firebug再来观看下,当然为了确保测试稳定,我用金山卫士清空了浏览器缓存。

      

      看到了么?说好的分屏加载的效果呢?怎么还是有2个请求。第一屏就一张图片,但实际上已经把两张图片都加载好了。坑爹的还不仅如此,我们继续看,当我把滚动条滑动到第二张图片……

      纳尼?第三个请求出现了!!!我一共两张图片,用了jquery.lazyload居然要下载3张,不仅没有减轻服务器压力,反而增加了,这不明摆着坑爹嘛。

      之后,我看了下lazyload的源码,其实逻辑上都是OK了,把img的src里的值,存放到自定义的original属性里,当图片滚动到浏览器可视区域内时,再把original里的值赋回到src里,实现分屏加载。

      但问题就出在调用上,lazyload的调用方法是写在$().ready(function(){});里,如:

    $().ready(function(){
        $("#tujie img").lazyload({
            effect : "fadeIn",
            failurelimit : 5
        });
    });

      也就是在页面载入完毕后才调用lazyload,而页面载入完毕后,图片也都下载好了,再去使用lazyload已经没有必要,反而就会出现上面说的那种情况:一共只有2张图片,却向服务器请求了3次,下载了3张图片,适得其反。

      网上有篇修改jquery.lazyload的文章,大家可以搜搜,不过我试了下,还是不行,直接不加载了。

      关于这问题的解决方法,就是换插件,我找到另一个分屏加载的插件,叫:jquery.scrollLoading,具体说明可以看下这篇文章《jQuery页面滚动图片等元素动态加载实现》,这个插件真正实现了图片分屏加载。

      PS:demo页面如果打不开了,可以下载这个demo包,不过测试需要放到服务器上去,本地直接打开,firebug里看不到3次请求的效果。demo点击下载

    原文链接:http://www.cnblogs.com/hooray/archive/2011/10/15/2212922.html

  • 相关阅读:
    Oracle中Blob转换成Clob
    【转】解决PowerDesigner 反向工程没有注释(备注)(SQL Server2008)+ Sql导入powerdesigner时中文丢失问题(Oracle11g)
    中国大陆开源镜像站汇(好东西大家一起用)
    【转】 CSS样式丢失总结
    .net程序错误:BadImageFormatException....如果在安装32位Oracle客户端组件的情况下以64位模式运行
    [转]程序员常用不常见很难得的地址大全,转来自己用
    【转】(C#)用MyXls生成Excel报表
    C# 生成Excel 并保存 包含web和winform调用方法
    ThinkPHP运算符与PHP运算符对照表
    ThinkPHP常用配置路径
  • 原文地址:https://www.cnblogs.com/zhaozhilu/p/4539266.html
Copyright © 2011-2022 走看看