背景

最近使用express做导航类型网站,因为这个是后端jade渲染,浏览器拿到页面之后,解析出来dom结构,导致100+的图片瞬间加载,严重浪费了宽带资源,加重服务器负担,因此打算延迟加载图片

模板引擎

当前使用jade

有人可能好奇,为什么在客服端浏览器,动态加载dom节点,但是这样的话,SEO不太好

解决方案

offset

通过监听需要懒加载的,第一个可以滚动的父容器,判断是不是在视图内,这个是一个解决方式,但是比较复杂,而且性能不好

IntersectionObserver

浏览器原生提供的能力,性能好,代码简单

jade 模板 增加lazy属性(按实际情况来)

block content
.container
each block in lists
.row.cell-wrap
p.cell-title=block.text
each item in block.children
a(href=`${item.link}` target='_blank')
.col-xs-6.col-sm-4.col-md-3.cell-item
.img
img(lazy=`${item.image}` alt=`${item.title}`)
.content
=item.title
p.desc=item.desc

浏览器端js配套监听

const intersectionObserver = new IntersectionObserver((entries, observer) => {
entries.forEach(item => {
const { intersectionRatio, target } = item
// `intersectionRatio`为目标元素的可见比例,大于`0`代表可见
if (intersectionRatio) {
// 解除监听
observer.unobserve(target);
// 赋值src,开始加载图片
target.src = target.getAttribute('lazy');
}
});
});
// 获取所有需要监听的元素并监听
document.querySelectorAll('img[lazy]').forEach((el) => intersectionObserver.observe(el))

IntersectionObserver 实现图片懒加载的更多相关文章

  1. IntersectionObserver实现图片懒加载

    API: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API 直接上源码: <!DOCTYPE ...

  2. Vue图片懒加载之lazyload插件使用

    当内容没有加载完的时候,用户体验不是很好,这时候,可以使用lazyload这个插件,提升用户体验,使用方法特别简单易用 一. vue lazyload插件: 插件地址:https://github.c ...

  3. VUE图片懒加载-vue lazyload插件的简单上手使用(优化版本)

    在用VUE做项目开发的过程中,首页用到了懒加载的方法,查找了一些方法,觉得官网写得太复杂,有一篇博客不错(https://www.cnblogs.com/xyyt/p/7650539.html),但是 ...

  4. vue项目中实现图片懒加载的方法

    对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载.这样子对于页面加载性能上会有很大的提升,也提高了用户体验. 实 ...

  5. 原生js - 两种图片懒加载实现原理

    目前图片懒加载的方式主要有两种: 1.利用getBoundingClientRectAPI得到当前元素与视窗的距离来判断 2.利用h5的新API IntersectionObserver 来实现 ge ...

  6. 前端实现图片懒加载(lazyload)的两种方式

    在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...

  7. jquery实现简单瀑布流布局(续):图片懒加载

    # jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...

  8. webapp图片懒加载实现

    图片懒加载在webapp上非常流行,应用的很广泛. 实现图片懒加载功能:zepto.picLazyLoad.min.js 引入类库 <script src="1.1.3/zepto.m ...

  9. JS图片懒加载

    简介 当页面图片太多时,加载速度就会很慢.尤其是用2G/3G/4G访问页面,不仅页面慢,而且还会用掉很多流量.图片懒加载的原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有 ...

  10. jQuery.imgLazyLoad图片懒加载组件

    一.前言 当一个页面中请求的图片过多,而且图片太大,页面访问的速度是非常慢的,对用户的体验非常不友好:使用图片懒加载,可以减轻服务器的压力,增加页面的访问量,这里主要是总结一下我自己写的图片懒加载组件 ...

随机推荐

  1. 4G EPS 中的 Control Plane

    目录 文章目录 目录 前文列表 控制平面 归属环境部分 无线接入网络部分 核心网络 EPS CP 中的 GTP-C UP 中的 GTP-U Tunnel 两端的 F-TEID 需要通过 CP 的信令流 ...

  2. 一文搞懂RESTful开发

    REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描述形式 http: ...

  3. 腾讯云服务器sdk

    参考:https://cloud.tencent.com/document/product/494/7244 pip install -i https://mirrors.tencent.com/py ...

  4. 线程安全使用 HashMap 的四种技巧

    这篇文章,我们聊聊线程安全使用 HashMap 的四种技巧. 1方法内部:每个线程使用单独的 HashMap 如下图,tomcat 接收到到请求后,依次调用控制器 Controller.服务层 Ser ...

  5. 公司es扩容kibana添加密码访问

    准备工作 基础优化[部署好的es无需操作,新server操作] setenforce 0 getenforce sed -i 's#^SELINUX=.*$#SELINUX=disabled#g' / ...

  6. Wakeup Source框架设计与实现

    Wakeup Source 为系统组件提供了投票机制,以便低功耗子系统判断当前是否可以进入休眠. Wakeup Source(后简称:WS) 模块可与内核中的其他模块或者上层服务交互,并最终体现在对睡 ...

  7. 用 Sentence Transformers v3 训练和微调嵌入模型

    Sentence Transformers 是一个 Python 库,用于使用和训练各种应用的嵌入模型,例如检索增强生成 (RAG).语义搜索.语义文本相似度.释义挖掘 (paraphrase min ...

  8. k8s 安装ingress nginx controller 并部署.net core ingress服务

    k8s 安装ingress nginx controller 并部署.net core ingress服务 本地k8s集群概览 192.168.28.132 k8smaster 192.168.28. ...

  9. web框架及Django简介

    WEB框架 Web框架是一种开发框架,用来支持动态网站.网络应用和网络服务的开发.这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法. web框架已经实现了很多功能 ...

  10. spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中,切面内重新抛出异常

    spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中 aop类实现Aspect的多个方法注解中,只有Around注解的方法是有返回值的,可以对方法的入参和返回值均进 ...