美文网首页
懒加载和预加载是什么

懒加载和预加载是什么

作者: 都市尘埃i | 来源:发表于2017-08-30 21:32 被阅读0次

    1.懒加载原理

    原理:先将img标签中的src链接设为同一张图片(空白图片),将其真正的图片地址存储再img标签的自定义属性中

    (比如data-src)。当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到

    懒加载的效果。

    这样做能防止页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题

    2.为什么要使用懒加载?

    很多页面,内容很丰富,页面很长,图片较多。比如说各种商城页面。这些页面图片数量多,而且比较大,少说百来K,多则上兆。要是页面载入就一次性加载完毕。估计大家都会等到黄花变成黄花菜了。

    这样做能防止页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题。-->

    既然懒加载的原理是基于判断元素是否出现在窗口可视范围内,首先我们写一个函数判断元素是否出现在可视范围内:-

    function isVisible($node){

    var winH = $(window).height(),

    scrollTop = $(window).scrollTop(),

    offSetTop = $(window).offSet().top;

    if (offSetTop < winH + scrollTop) {

    return true;

    } else {

    return false;

    }

    再添加上浏览器的事件监听函数,让浏览器每次滚动就检查元素是否出现在窗口可视范围内:

    $(window).on("scroll", function{

    if (isVisible($node)){

    console.log(true);

    }

    })

    我们已经很接近了,现在我们要做的是,让元素只在第一次被检查到时打印true,之后就不再打印了

    var hasShowed = false;

    $(window).on("sroll",function{

    if (hasShowed) {

    return;

    } else {

    if (isVisible($node)) {

    hasShowed = !hasShowed;

    console.log(true);

    }

    }

    懒加载的优点是什么?

    页面加载速度快、可以减轻服务器的压力、节约了流量,用户体验好

    2、预加载

    1.什么是预加载?

    提前加载图片,当用户需要查看时可直接从本地缓存中渲染

    2.为什么要使用预加载?

    图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速、无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验。

    3.实现预加载的方法有哪些?

    方法一:用CSS和JavaScript实现预加载

    方法二:仅使用JavaScript实现预加载

    方法三:使用Ajax实现预加载

    懒加载和预加载的对比

    1)概念:

    懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。

    预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。

    2)区别:

    两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。

    3)懒加载的意义及实现方式有:

    意义:

    懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数。

    实现方式:

    1.第一种是纯粹的延迟加载,使用setTimeOut或setInterval进行加载延迟.

    2.第二种是条件加载,符合某些条件,或触发了某些事件才开始异步下载。

    3.第三种是可视区加载,即仅加载用户可以看到的区域,这个主要由监控滚动条来实现,一般会在距用户看到某图片前一定距离遍开始加载,这样能保证用户拉下时正好能看到图片。

    4)预加载的意义及实现方式有:

    意义:

    预加载可以说是牺牲服务器前端性能,换取更好的用户体验,这样可以使用户的操作得到最快的反映。

    实现方式:

    实现预载的方法非常多,比如:用CSS和JavaScript实现预加载;仅使用JavaScript实现预加载;使用Ajax实现预加载。

    常用的是new Image();设置其src来实现预载,再使用onload方法回调预载完成事件。只要浏览器把图片下载到本地,同样的src就会使用缓存,这是最基本也是最实用的预载方法。当Image下载完图片头后,会得到宽和高,因此可以在预载前得到图片的大小(方法是用记时器轮循宽高变化)。

    相关文章

      网友评论

          本文标题:懒加载和预加载是什么

          本文链接:https://www.haomeiwen.com/subject/azzxjxtx.html