懒加载以及预加载相关概念

news2024/11/16 3:35:11

⼆、懒加载

1. 懒加载的概念

懒加载也叫做延迟加载、按需加载,指的是在⻓⽹⻚中延迟加载图⽚数据,是⼀种较好的⽹⻚性能优化 的⽅式。

在⽐较⻓的⽹⻚或应⽤中,如果图⽚很多,所有的图⽚都被加载出来,⽽⽤户只能看到可视窗 ⼝的那⼀部分图⽚数据,这样就浪费了性能。

如果使⽤图⽚的懒加载就可以解决以上问题。在滚动屏幕之前,可视化区域之外的图⽚不会进⾏加载, 在滚动屏幕时才加载。这样使得⽹⻚的加载速度更快,减少了服务器的负载。懒加载适⽤于图⽚较多, ⻚⾯列表较⻓(⻓列表)的场景中。  

2. 懒加载的特点  

  • 减少⽆⽤资源的加载:使⽤懒加载明显减少了服务器的压⼒和流量,同时也减⼩了浏览器的负担。
  • 提升⽤户体验: 如果同时加载较多图⽚,可能需要等待的时间较⻓,这样影响了⽤户体验,⽽使⽤懒 加载就能⼤⼤的提⾼⽤户体验。
  • 防⽌加载过多图⽚⽽影响其他资源⽂件的加载 :会影响⽹站应⽤的正常使⽤。  

3. 懒加载的实现原理 

图⽚的加载是由 src 引起的,当对 src 赋值时,浏览器就会请求图⽚资源。

根据这个原理,我们使⽤ HTML5 的 data-xxx 属性来储存图⽚的路径,在需要加载图⽚的时候,将 data-xxx 中图⽚的路径赋 值给 src ,这样就实现了图⽚的按需加载,即懒加载。

注意: data-xxx 中的 xxx 可以⾃定义,这⾥我们使⽤ data-src 来定义。

懒加载的实现重点在于确定⽤户需要加载哪张图⽚,在浏览器中,可视区域内的资源就是⽤户需要的资 源。所以当图⽚出现在可视区域时,获取图⽚的真实地址并赋值给图⽚即可。

使⽤原⽣JavaScript实现懒加载:

知识点:  

(1) window.innerHeight 是浏览器可视区的⾼度

(2) document.body.scrollTop || document.documentElement.scrollTop 是浏览器滚 动的过的距离

(3) imgs.offsetTop 是元素顶部距离⽂档顶部的⾼度(包括滚动条的距离)

(4)图⽚加载条件: img.offsetTop < window.innerHeight + document.body.scrollTop;

图示:

 

图片的懒加载代码实现:

<div class="container">

     <img src="loading.gif" data-src="pic.png">

     <img src="loading.gif" data-src="pic.png">

     <img src="loading.gif" data-src="pic.png">

     <img src="loading.gif" data-src="pic.png">

     <img src="loading.gif" data-src="pic.png">

     <img src="loading.gif" data-src="pic.png">
</div>

<script>
    var imgs = document.querySelectorAll('img');

    function lozyLoad(){
    var scrollTop = document.body.scrollTop || 
        document.documentElement.scrollTop;
        var winHeight= window.innerHeight;
        for(var i=0;i < imgs.length;i++){
             if(imgs[i].offsetTop < scrollTop + winHeight ){
                     imgs[i].src = imgs[i].getAttribute('data-src');
                }
             }
      }
     window.onscroll = lozyLoad();

</script>

 

4. 懒加载与预加载的区别

这两种⽅式都是提⾼⽹⻚性能的⽅式,两者主要区别是⼀个是提前加载,⼀个是迟缓甚⾄不加载。

懒加 载对服务器前端有⼀定的缓解压⼒作⽤,预加载则会增加服务器前端压⼒。

懒加载也叫延迟加载,指的是在⻓⽹⻚中延迟加载图⽚的时机,当⽤户需要访问时,再去加载,这 样可以提⾼⽹站的⾸屏加载速度,提升⽤户的体验,并且可以减少服务器的压⼒。它适⽤于图⽚很 多,⻚⾯很⻓的电商⽹站的场景。

懒加载的实现原理是,将⻚⾯上的图⽚的 src 属性设置为空字符 串,将图⽚的真实路径保存在⼀个⾃定义属性中,当⻚⾯滚动的时候,进⾏判断,如果图⽚进⼊⻚ ⾯可视区域内,则从⾃定义属性中取出真实路径赋值给图⽚的 src 属性,以此来实现图⽚的延迟加 载。

预加载指的是将所需的资源提前请求加载到本地,这样后⾯在需要⽤到时就直接从缓存取资源。通 过预加载能够减少⽤户的等待时间,提⾼⽤户的体验。我了解的预加载的最常⽤的⽅式是使⽤ js 中 的 image 对象,通过为 image 对象来设置 scr 属性,来实现图⽚的预加载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/355111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建vue项目

前提安装node.js 安装vue脚手架 命令: npm install -g vue/cli 安装完成后查看下版本 vue --version 开始创建vue项目,可以用cmd终端也可以用pow(Windows PowerShell) 搜索输入pow以管理员运行 找一个项目存放位置 pow进入该目录 创建项目命令 如果创建项目时候报错 输入…

解读|奔驰财报展现强大现金实力,2年内回购价值40亿欧元股票

2月17日&#xff0c;梅赛德斯-奔驰集团股份公司&#xff08;股票代码&#xff1a;MBG&#xff09;发布了拆分后的第一个财年业绩报告&#xff0c;2022年&#xff0c;该集团实现营业总收入1500.17亿欧元&#xff0c;同比上年增长35%&#xff1b;实现税前利润为204.58亿欧元&…

【基础】Flink -- ProcessFunction

Flink -- ProcessFunction处理函数概述处理函数基本处理函数 ProcessFunction按键分区处理函数 KeyedProcessFunction定时器与定时服务基于处理时间的分区处理函数基于事件时间的分区处理函数窗口处理函数 ProcessWindowFunction应用案例 -- Top N处理函数概述 为了使代码拥有…

基于Springbot+微信小程序的购药平台的设计与实现

基于Springbot微信小程序的购药平台的设计与实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、…

Jackson 序列化:Cannot deserialize value of type `java.time.LocalDateTime`

问题描述 使用 jackson 反序列化异常如下&#xff1a; Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type java.time.LocalDateTime from String “2023-02-13 19:43:01”: Failed to deserialize java.time.LocalDat…

MySQL的四种事务隔离级别

目录一、事务的基本要素&#xff08;ACID&#xff09;1、原子性&#xff08;Atomicity&#xff09;&#xff1a;2、一致性&#xff08;Consistency&#xff09;&#xff1a;3、隔离性&#xff08;Isolation&#xff09;&#xff1a;4、持久性&#xff08;Durability&#xff09…

使用canvas给上传的整张图片添加平铺的水印

写在开头 哈喽&#xff0c;各位倔友们又见面了&#xff0c;本章我们继续来分享一个实用小技巧&#xff0c;给图片加水印功能&#xff0c;水印功能的目的是为了保护网站或作者版权&#xff0c;防止内容被别人利用或白嫖。 但是网络中&#xff0c;是没有绝对安全的&#xff0c;…

iOS接入Google登录

1.在Google Cloud后台配置客户端ID 首先要在 Google Cloud 中创建一个项目。新创建的Project需要先配置同意屏幕。一共有4步骤需要配置。 1.OAuth 同意屏幕 User Type选择"外部"进行创建。填写必必要的信息&#xff0c;应用名称、用户支持电子邮件地址、开发者电子邮…

chatGPT是什么?chatGPT运用场景有哪些?

大家好&#xff0c;小编来为大家解答以下问题 chatGPT是什么&#xff1f;&#xff0c;chatGPT概念股有哪些&#xff1f;一个有趣的事情&#xff0c;一个有趣的事情&#xff0c;现在让我们一起来看看吧&#xff01; 1、chatpgt是什么 ChatGPT是OpenAI开发的大型预训练语言模型。…

yolov5 onnx 前后处理+运行推理(暂记)

代码在这个基础上改的&#xff0c;虽然跑通了&#xff0c;还是很混乱&#xff0c;这里先简单记录一下处理的流程&#xff1a; yolov5 环境设置yolov5 网络结构ONNX yolov5导出 convert error --grid番外&#xff1a;onnx直接操作番外&#xff1a;yolov5的重新训练 result 0 -…

[安装之4] 联想ThinkPad 加装固态硬盘教程

方案&#xff1a;保留原有的机械硬盘&#xff0c;再加装一个固态硬盘作为系统盘。由于X250没有光驱&#xff0c;这样就无法使用第二个2.5寸的硬盘。还好&#xff0c;X250留有一个M.2接口&#xff0c;这样&#xff0c;就可以使用NGFF M.2接口的固态硬盘。不过&#xff0c;这种接…

短视频时代是靠什么赚钱的,介绍常见的5种方式,简单明了

目前&#xff0c;短视频越来越火热&#xff0c;大家都知道做短视频可以赚钱&#xff0c;那么究竟是靠什么赚钱的&#xff0c;又有几个人知道呢&#xff1f;短视频创业有个人、有团队&#xff0c;怎么实现团队的生存和发展。 常见的几种变现方式有&#xff1a; 1、平台分成 各…

C语言中用rand()函数产生一随机数

在C语言中如何产生一个随机数呢&#xff1f;用rand()函数。 rand()函数在头文件&#xff1a;#include <stdio.h>中&#xff0c;函数原型&#xff1a;int rand(void);。rand()会返回一个范围在0到RAND_MAX&#xff08;32767&#xff09;之间的随机数&#xff08;整数&…

Pytorch 基础之张量数据类型

学习之前&#xff1a;先了解 Tensor&#xff08;张量&#xff09; 官方文档的解释是&#xff1a; 张量如同数组和矩阵一样, 是一种特殊的数据结构。在PyTorch中, 神经网络的输入、输出以及网络的参数等数据, 都是使用张量来进行描述。 说白了就是一种数据结构 基本数据类型…

Python可以解码吗,解码打码是如何实现的

前言 咳咳&#xff0c;进来的铁汁都是抱着学习的心态进来看的吧&#xff0c;咱今天不讲解解码&#xff0c;咱来说说python如何来实现打码功能~ 这一个个进来的 都是标题党吧哈哈哈 有兴趣的可以继续看看哦 最近重温了一档综艺节目 至于叫什么 这里就不细说了 老是看着看着就…

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】

【QT 5 相关实验-示波器-学习笔记-示波器组件练习与使用总结】1、概述2、实验环境3、参考资料-致谢4、自我提升实验效果视频演示5、代码练习-学习后拆解-实验步骤&#xff08;1&#xff09;头文件部分-"mwaveview.h"&#xff08;2&#xff09;cpp文件部分-"mwav…

UDP数据报套接字编程

DatagramSocket API DatagramSocket 是UDP Socket&#xff0c;用于发送和接收UDP数据报。 DatagramSocket 构造方法&#xff1a; DatagramSocket 方法&#xff1a; DatagramPacket API DatagramPacket是UDP Socket发送和接收的数据报。 DatagramPacket 构造方法&#xff…

本地生成动漫风格 AI 绘画 图像|Stable Diffusion WebUI 的安装和局域网部署教程

Stable Diffusion WebUI 的安装和部署教程1. 简介2. 安装环境2.1 Windows2.2 Linux3. 运行4. 模型下载链接5. 局域网部署5.1 Windows5.2 Linux6. 其他资源1. 简介 先放一张WebUI的图片生成效果图&#xff0c;以给大家学习的动力 &#xff1a;&#xff09; 怎么样&#xff0c;…

浅析SAS协议(1):基本介绍

文章目录概述SAS协议发展历程SAS技术特性SAS设备拓扑SAS phySAS地址SAS设备类型SAS协议分层参考链接概述 SAS&#xff0c;全称Serial Attached SCSI&#xff0c;即串行连结SCSI&#xff0c;是一种采用了串行总线的高速互连技术。通过物理上使用串行总线连结&#xff0c;在链路…

用一行Python代码,为图片上水印版权!

今天一个朋友跟我吐槽&#xff1a;前段时间&#xff0c;我辛辛苦苦整理的一份XX攻略&#xff0c;分享给自己的一些朋友&#xff0c;结果今天看到有人堂而皇之地拿着这份攻略图片去引流&#xff0c;并声称是自己整理的&#xff0c;真是岂有此理&#xff01;他自己总结吃一堑长一…