携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天juejin.cn/post/712312…
懒加载 (懒加载也就是延迟加载。)
当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换乘一张大小为1*1px图片的路径(这样就只需请求一次,俗称占位图),只有当图片出现在浏览器的可视区域时,才设置图片真正的路径,让图片显示出来,这就是图片懒加载。
优点:网页加载速度更快、可以减轻服务器的压力、节约了流量,用户体验好。
懒加载的原理
页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通过javascript设置了图片路径,浏览器才会发送请求。懒加载的原理就是先在页面中所有的图片统一使用一张占位图进行占位,把真正的路径存在“data-url”属性里,要用的时候就取出来,在设置。
懒加载的实现步骤
- 首先,不要将图片地址放到src属性中,而是放到其它属性(data-original)中。
- 页面加载完成后,根据scrollTop判断图片是否在用户的视野内,如果在,则将data-orginal属性中的值取出来放到src属性中。
- 在滚动事件中重复判断图片是否进入视野,如果进入,则将data-orginal属性中的值取出放到src属性中。
预加载 (也就是提前加载)##
什么是预加载? 提前加载图片,当用户需要查看时可直接从本地缓存中渲染。
为什么要使用预加载?
图片预先加载到浏览器中,访问者便可顺利的在你的网站上冲浪,并享受到极快的加载速度。这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速、无缝地发布,也可帮助用户在浏览你网站内容时获得更好的用户体验。
实现预加载的方法有哪些?
- 用CSS和JavaScript实现预加载。
- 仅使用JavaScript实现预加载(原生js)
- 使用Ajax实现预加载(这种方法是最常用的)
懒加载和预加载的对比
1. 概念:
懒加载:也叫延迟加载;js图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片 预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。
2.区别:
两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器有一定的缓解压力作用,预加载则会增加服务器端压力。
3.懒加载的意义及实现方式有:
意义:懒加载的主要目的是作为服务器端的优化,减少请求数或延迟请求数,
4.懒加载实现方式:
1)第一种是纯粹的延迟加载,使用setTimeout或setInterval进行加载延迟
2)第二种是条件加载,符合某些条件,或触发某些事件才开始异步下载。
3)第三种是可视区域加载,即仅加载用户可以看到的区域,这个主要由监控滚动条来实现,一般会在距用户看到某图片前一定距离变开始加载,这样的能保证用户下拉时正好看到图片。
5.预加载的意义及实现方式:
意义:预加载可以说是牺牲服务器端性能,换取更好的用户体验,这样可以使用户的操作得到最快的反应。
实现方式:实现预加载的方法非常多,比如:用css和js实现预加载;仅使用js预加载;使用ajax实现预加载,常用的时new Image();设置其src来实现预加载,再使用onload事件调用预加载完成事件。只要浏览器把图片下载到本地,同样的src就会使用缓存,这是最基本也是最实用的预加载方法。当image下载完图片头后,会得到宽和高,因此可以在预加载前得到图片的大小(方法是计时器轮询宽高变化。)