懒加载工作原理

1.1-懒加载介绍(以图片懒加载为例)

1.为什么要有懒加载技术

  • (1)img标签特点:不管图片隐藏还是显示 有src属性都会去加载

    • 例如电商类网站,一个页面有几百张图片。有时候假设用户不滚动,也会加载图片资源,此时非常损耗网页性能
  • (2)那么如果页面上有太多的图片 而且有些图片不在可视窗口内 如果加载了会影响页面的渲染页面时间。
    • 判断网页是否使用图片懒加载技术:滚动网页的时候,图片会动态加载(一般会有一个渐变动画,例如京东)

2.如何实现懒加载技术

  • 核心原理:延迟加载: 当图片进入可视区域内容的时候才去加载
  • 实现思路
    • 1.将图片真实资源放入一个自定义属性中

      • 自定义属性作用:存储图片路径,此时图片不会加载
    • 2.监听页面滚动条事件
    • 3.判断图片是否进入页面可视区域
    • 4.取出图片的自定义属性,赋值给图片的src属性(此时真正加载图片资源)
  • 示例代码如下:
<!doctype html>
<html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>* {margin: 0;padding: 0;}ul {list-style: none;width: 1000px;margin: 0 auto;}ul li {width: 230px;height: 230px;float: left;margin-right: 20px;margin-bottom: 20px;}ul li.last {margin-right: 0;}ul li img {width: 100%;height: 100%;display: block;opacity: 0;/* 过渡动画 */transition: all 5s linear;}</style>
</head><body><!-- 假设上面的内容高度1000px --><div style="height: 1000px;;background-color: rgba(200, 111, 111, 0.5)"></div><ul id="ul1"><li><img data-src="http://img.daimg.com/uploads/allimg/160324/1-160324232117.jpg" alt=""></li><li><img data-src="http://img.daimg.com/uploads/allimg/160318/1-16031P01P0.jpg" alt=""></li><li><img data-src="http://img.daimg.com/uploads/allimg/160318/1-16031P01332.jpg" alt=""></li><li><img data-src="http://img.daimg.com/uploads/allimg/160318/1-16031P01332.jpg" alt=""></li></ul><script>/* 懒加载工作原理 *///0. 将图片的资源放入自定义属性中(例如data-src)//1.监听页面滚动条事件window.onscroll = function(e){console.log(document.scrollTop + document.clientHeight);//2.如果图片进入可视区域(假如400px),则取出自定义属性,赋值给src属性(真正加载)//ul是否进入可视区域 : 滚动条距离 + 页面可视区域高度 > 盒子高度if(document.documentElement.scrollTop + document.documentElement.clientHeight > 1000){var imgList = document.querySelectorAll('li>img');for(var i = 0;i<imgList.length;i++){imgList[i].style.opacity = 1;//过渡动画imgList[i].src = imgList[i].getAttribute('data-src');//过渡动画};}};</script>
</body></html>

网页性能优化02-懒加载工作原理相关推荐

  1. 前端性能优化总结/懒加载、函数节流、优化dom操作、雪碧图、合并文件

    1.减少 HTTP 请求数量 在浏览器与服务器进行通信时,主要是通过 HTTP 进行通信.浏览器与服务器需要经过三次握手,每次握手需要花费大量时间.而且不同浏览器对资源文件并发请求数量有限(不同浏览器 ...

  2. 网页性能优化之异步加载js文件

    一个网页的有很多地方可以进行性能优化,比较常见的一种方式就是异步加载js脚本文件.在谈异步加载之前,先来看看浏览器加载js文件的原理. 浏览器加载 JavaScript 脚本,主要通过<scri ...

  3. 服务器图片加载慢_页面提高性能利器_懒加载

    哈喽,艾瑞巴蒂,现在搜狗商城产品需求已经趋于稳定,已经开始逐步的着手进行页面的性能提升工作.这不最近小编正在进行"页面懒加载需求"的功能测试.小编第一次听说这个名词,让我们一起了解 ...

  4. 图片懒加载的原理和实现

    一,前置知识 1,为什么要图片懒加载 懒加载是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不是一次性加载所有图片,当需要显示时,再发送图片请求,避免打开网页时加载过多资 ...

  5. img 的 alt 与 title 的异同,还有实现图片懒加载的原理

    异同 alt是图片加载失败的时候,显示在网页上的替代文字:title是鼠标放在图片上显示的提示文字,title是对图片的描述与进一步说明. 这些都是表面上的区别,alt是img的必要属性,而title ...

  6. 图片懒加载的原理--三种方法实现

    1. 图片懒加载的背景 类似于大型的淘宝商城.京东等网页,设计大量的商品图片信息,如果我们使页面包含的所有图片一次性加载完成,那用户体验很差. 目前流行的做法是滚动动态加载,也就是懒加载,显示在屏幕之 ...

  7. 【前端】图片懒加载的原理和三种实现方式

    一. 图片懒加载的目的 大型网站如常用的淘宝,京东等页面,需要展示大量的商品图片信息,如果打开网页时让所有图片一次性加载完成,需要处理很多次网络请求,等待加载时间比较长,用户体验感很差. 有一种常用的 ...

  8. ajax预加载html seo,前端性能优化 — JS预加载和懒加载

    JS预加载 需求:有时我们需要实现例如快速快速切换页面.图片之类的功能时,能尽快的加载出我们所需的图片会极大提升用户体验,这时用预加载将图片先缓存到浏览器,用户使用需显示图片时无疑会顺畅很多. 核心: ...

  9. 页面优化之懒加载与预加载

    1.前言 PC端网速较快,现在普通都是百兆宽带,那么折算一下就是10M/s的下载速度,基本上资源如果在10M以内的话加载还是比较快的. 但是移动端就不行了.移动端需要消耗巨额的流量,所以尽量减少移动端 ...

最新文章

  1. 算法面试不懂技巧,你纯属被刷
  2. WWDC上这个神级功能,一言不合又要改变未来购物趋势
  3. 更强、更稳、更高效:解读 etcd 技术升级的三驾马车
  4. Could not find a version that satisfies the requirement requests (from version : )
  5. CSS 中 的 margin、border、padding 区别 (内边距、外边距)
  6. 《绅士》Typecho个人博客模板主题
  7. maven私服的使用
  8. csbte路点机器人_反恐精英csbte地图
  9. mysql中kill掉所有锁表的进程
  10. 服务器虚拟机迁移的6个步骤,KVM 虚拟机迁移(示例代码)
  11. java反向代理开源_树莓派反向代理方法大全
  12. 阿里云服务器修改主机名
  13. 一篇文章让你了解互联网公司的职位架构以及职能
  14. AForge学习笔记(5):AForge.Imaging(下)
  15. java验证码验证码_Java登录页面实时验证用户名密码和动态验证码
  16. 运用Acronis True Image恢复系统
  17. ddr5内存上市时间_DDR5内存或将在2020年进入量产阶段
  18. 你的Qt按钮可以加载Gif圆形的头像吗?
  19. CUlane数据集介绍
  20. 【数据实战】足球运动员身价估计

热门文章

  1. C语言中前面有四个空格,在C语言编程中什么叫前导空格,什么叫尾随空 – 手机爱问...
  2. centos7下php设置用户和组,centos系统添加/删除用户和用户组的例子
  3. 分布式内存数据库的CAP-BASE原理
  4. 七十、反转和合并链表、 链表有环的判断
  5. leetcode刷题 66 67
  6. 时间序列预测方法汇总:从理论到实践(附Kaggle经典比赛方案)
  7. 今晚直播 | 小米人工智能部崔世起:小爱同学全双工技术实践
  8. 人工神经网络发现生物神经网络,智源超高清电镜图像分割挑战赛开赛
  9. 机器阅读理解 / 知识库 / 深度学习 / 对话系统 / 神经机器翻译 | 本周值得读
  10. lombok中的@Data注解与MyBatis的懒加载机制冲突解决