• 前端经典面试题 | 性能优化之 懒加载


    🖥️ 前端经典面试题专栏:性能优化之 懒加载
    🧑‍💼 个人简介:一个不甘平庸的平凡人🍬

    ✨ 个人主页:CoderHing的个人主页

    🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

    👉 你的一键三连是我更新的最大动力❤️


    一、回答点

    在网页中延迟加载图片数据,提升用户体验,减少无用资源加载

    二、深入回答

    懒加载的概念

            懒加载又叫 延迟加载、按需加载,在网页中延迟加载图片数据,是一个比较好的网页性能优化的方式之一。在较长的网页中,如果图片数据很多美,所有的图片一下都被加载出来,而用户只能看到可视窗口的一部分图片数据,这样就浪费了性能。

    懒加载的特点

            减少无用资源的加载:使用懒加载明显减少了服务器的压力,也减少了浏览器的负担。

            提升用户的体验:同时加载很多图片,用户需要等待的时间较长,会影响用户体验,使用了懒加载可以大大的提高用户体验。

            防止加载过多图片影响其他资源文件的加载:影响网站应用的正常使用

    懒加载的实现原理

            图片的加载是由src引起的,当你对src进行赋值时,浏览器就会请求图片资源,根据它我们可以使用HTML5的 data-xxx 属性来存储图片路径,在需要加载图片的时候 将 data-xxx 中图片的路径赋值给src 就实现了图片的懒加载。

            data-xxx中的xxx可以是自定义的,这里使用data-coder来定义。

            懒加载的实现在于用户需要加载哪张图片,在浏览器中,可视区域内的资源就是需要的资源。当图片出现在可视区域内时,获取图片的真实地址并赋值给图片

            window.innerHeight =》 浏览器可视的高度

            document.body.scrollTop || document.documentElement.scrollTop =》 浏览器滚动过的距离

            imgs.offsetTop =》 是元素顶部距离文档顶部的高度(包括滚动条距离)

            图片加载条件: img。offsetTop < window.innerHeight + document.body.scrollTop

    代码实现:

    1. // 首先获取到 所有图片
    2. let imgs = document.querySelectorAll('img');
    3. function load() {
    4. let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    5. let heightT = window.innerHeight;
    6. for(let i = 0; i < imgs.length; i++) {
    7. if(imgs[i].offsetTop < scrollTop + heightT ){
    8. imgs[i].src = imgs[i].getAttribute('data-coder')
    9. }
    10. }
    11. }
    12. window.onscroll = load()

    懒加载和预加载的区别

            懒加载和预加载都是提高网页性能的方式,他们的区别是  一个为提前加载,一个为慢加载甚至不加载。懒加载对服务器有一定的缓解压力作用,而预加载会增加服务器的压力。

  • 相关阅读:
    js变量的重复声明问题总结
    何为AVOption?AVClass? 及其关联的若干个Context
    [Tools: cntk] Linux下cntk-gpu安装
    websocket逆向
    一个项目的整体测试流程有哪几个阶段?测试方法有哪些?
    物理学专业英语(写作整理)04 物理中常用的空间表示
    【畅购商城】用户登录
    02-React脚手架+Todos项目(组件拆分, State应用, 组件通信+数据校验, nanoid)
    掌握Pillow:Python图像处理的艺术
    MySQL——四、SQL语句(下篇)
  • 原文地址:https://blog.csdn.net/coderHing/article/details/127852833