zoukankan      html  css  js  c++  java
  • 图片延迟加载技术

          前几天在优化网站首页的过程中,有这样一个问题,就是图片加载时间过长,后来在网上查询,看了图片延迟加载技术,现在有很多大型门户类网站首页都在用,最具代表性的就是淘宝网,在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的交互。尤其是对于高清晰的图片,占的几M的空间。ImageLazyLoad技术就是,当前可是界面的图片是加载进来的,而不可见页面(通过滚动条下拉可见)中的图片是不加载的,这样势必会引起速度上质的提升。

          眼下比较常用的图片延迟加载技术有四种:kissy(淘宝的JS框架),Jquery 图片延迟插件,Prototype,YUI2。

    一、使用JQuery插件 ,插件名: jquery.lazyload(7kb大小),压缩后(3kb大小):

    1.导入JS插件
    <script src="http://jianzi0307.blog.163.com/blog/jquery.js" type="text/javascript"></script>
    <script src="http://jianzi0307.blog.163.com/blog/jquery.lazyload.js" type="text/javascript"></script>
    2.在你的页面中加入如下的javascript:
    $("img").lazyload();
    这将会使所有的图片都延迟加载。

    当然插件还有几个配置项可供设置:
    1.改变threshold
    $(“img”).lazyload({ threshold : 200 });
    把阀值设置成200 意思就是当图片没有看到之前先load 200像素。

    2.当然了你也可以通过设置占位符图片和自定事件来触发加载图片事件
    复制代码
    代码如下:

    $("img").lazyload({
    placeholder : "img/grey.gif",
    event : "click"
    });

    3.可以通过定义effect 参数来定义一些图片显示效果
    复制代码
    代码如下:

    $("img").lazyload({
    placeholder : "img/grey.gif",
    effect : "fadeIn"
    });

    LazyLoad(延迟加载)技术不仅仅用在对网页中图片的延迟加载,对数据同样可以,Google Reader和Bing图片搜索就把LazyLoad技术运用的淋漓尽致;

    缺陷:
    1.与Ajax技术的冲突;
    2.图片的延迟加载,遇到高度特别高的图片,会出现停止加载的问题;
    3.写代码不规范的同学要注意了,不管由于什么原因,如果您的页面中,img标签的height属性未定义,那么我建议您最好不要使用ImageLazyLoad

    二、使用淘宝的延迟加载技术:(2kb大小)
    http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js
    调用方法也是很简单的:
    <script src="http://a.tbcdn.cn/kissy/1.0.0/build/imglazyload/imglazyload-min.js" type="text/javascript"></script> <script type="text/javascript">// <![CDATA[KISSY.ImageLazyload();//]]></script>
    注:该脚本依赖 yahoo-dom-event, 页面中需要加载 yui 2.x,你也可以直接引用下面的地址:
    <script src="http://kissy.googlecode.com/svn/trunk/third-party/yui2/yahoo-dom-event/yahoo-dom-event.js" type="text/javascript"></script>

    配置参数如下:

    <script type="text/javascript">
    KISSY.ImageLazyload({
    mod: "manual", // 延迟模式。默认为 auto
    diff: 200 // 当前屏幕下多远处的图片开始延迟加载。默认两屏外的图片才延迟加载
    });
    </script>

    manual 模式时,需要手动将页面中需要延迟加载的图片的 src 属性名更改为 data-lazyload-src. 比如 SRP 页面,宝贝列表的后20个图片延迟加载。 输出时,html 代码为:
    <img data-lazy-src="http://jianzi0307.blog.163.com/blog/path/to/img" alt="something" />

    如果您是Jquery,Prototype等这些JS框架的粉丝,他们都有定制的LazyLoad Plugin提供:http://www.appelsiini.net/projects/lazyload

    LazyLoad(延迟加载)技术不仅仅用在对网页中图片的延迟加载,对数据同样可以。

  • 相关阅读:
    locate和grep命令
    内存管理(30天自制操作系统--读书笔记)
    单字节的FIFO缓存(30天自制操作系统--读书笔记)
    STM32 DMA中断只进入一次的解决办法
    Linux Linker
    Linux Linker Script
    java学习-- equals和hashCode的关系
    java学习--"==”和 equals
    java学习--equals
    POI richText和html的转换案例
  • 原文地址:https://www.cnblogs.com/superfeeling/p/2363003.html
Copyright © 2011-2022 走看看