前端--性能优化【1】--网络优化与页面渲染优化

一、网络优化

1、DNS预解析

link标签的rel属性设置dns-prefetch,提前获取域名对应的IP地址

2、CDN(网络分发系统)

用户与服务器的物理距离对响应时间也有影响。

内容分发网络(CDN)是一组分散在不同地理位置的 web 服务器,用来给用户更高效地发送内容。典型地,选择用来发送内容的服务器是基于网络距离的衡量标准的。

3、html离线缓存

优点:提高页面加载速度和用户体验
在启用HTML 离线缓存后,浏览器会始终从缓存中读取文件,因此每次更新页面时,需要更新描述文件中的版本号以确保浏览器能够获取新的文件内容

4、强协商缓存

浏览器内部保存有url的相关信息,在网络层面上会减轻服务器的压力,快速得到数据,解析到IP地址

5、多域名

浏览器内部都有票对同域名限制并发下载数

6、避免图片src为空

假如src为空的话,浏览器仍会发起一次HTTP请求,白白加载一次资源,导致加载时间变长,影响首屏加载时间

二、页面渲染优化

1、时间切片

用于页面渲染和任务处理的技术,旨在提高应用程序的响应性和用户体验。它将长时间运行的任务分解成小的时间片段,这些任务在多个帧之间分散执行,以确保主线程不会长时间被阻塞,从而保持页面的流畅性

使用浏览器的requestIdleCallback API或第三方库(如React的react-suspense)来实现。它允许开发人员将任务分解为小块,并在空闲时间执行,以避免主线程被占用。

时间切片常用于:

  • 大规模数据的渲染
  • 复杂的计算或数据处理
  • 异步请求的处理
  • 动画和交互的流畅性维护

可以解决以下四种问题:

  1. 降低主线程压力:长时间运行的任务,如大型计算或复杂的数据处理,会占用主线程,导致页面失去响应性。
  2. 提高用户体验:通过将任务拆分成小块,时间切片可以确保用户界面在执行任务的同时保持流畅,不会出现卡顿或阻塞。
  3. 优化任务并发:时间切片可以更好地管理并发任务,确保任务不会相互干扰。
  4. 降低电池消耗:通过将任务分散到多个时间片段,时间切片可以减少CPU的使用,延长移动设备的电池寿命。

2、虚拟列表

虚拟列表通常运行在前端的UI层,主要用于提高前端渲染性能。虚拟滚动技术只渲染可见区域内的数据,而不是全部数据,从而提高性能。这可以通过使用虚拟滚动库

(如react-windowvue-virtual-scroller)来实现

些库会在前端应用的UI层处理数据的显示,通过动态渲染DOM元素来提高性能。

3、分页+异步

分页异步加载通常涉及到前端应用与后端服务器之间的通信。在这种情况下,前端应用通常会发出分页请求,然后后端服务器根据请求来提供相应的数据页。这种分页请求通常是异步的,通常使用AJAX、Fetch或类似的机制。分页异步加载会涉及到前端应用的业务逻辑层,以便发送请求和处理响应。前端应用通常会将从服务器获取的数据渲染到虚拟列表或其他UI组件中。

在请求头中添加page字段,来向后端获取具体需要的页码内容

虚拟列表通常在前端的UI层运行,用于提高前端渲染性能,而分页异步加载涉及前端应用的业务逻辑层和与后端服务器的通信,用于获取分页数据。两者可以结合使用,以在前端显示大量数据并实现分页加载。

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

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

相关文章

linux常见命令-文件目录类

9.4 文件目录类 (1)pwd 指令:显示当前工作目录的绝对路径 (2)Is指令:查看当前目录的所有内容信息 基本语法: ls [选项,可选多个] [目录或是文件] 常用选项:-a:显示当前目录所有的文件和目录,包括隐藏的…

钢铁异常分类 few-shot 问题 小陈读paper 钢铁2

很清爽的 abstract 给出链接 前面的背景意义 其实 是通用的 这里替大家 整理一吓吓 1 缺陷分类在钢铁表面缺陷检测中 有 意义。 2 大多数缺陷分类模型都是基于完全监督的学习, 这需要大量带有图像标签的训练数据。 在工业场景中收集有缺陷的图像是非常困难…

C++入门(c++历史篇)

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 重点 1. 什么是C2. C的发展…

RTOS(6)任务管理

任务状态理论 我们是怎么实现,两个同优先级的任务之间交替执行的呢? 任务切换的基础:tick中断! tick为1ms一个周期,可以通过修改时钟配置修改; running:正在进行的任务3为running&#xff…

`SQL`编写判断是否为工作日函数编写

SQL编写判断是否为工作日函数编写 最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫) 我们一起看看(针对ORACLE) 1.声明: CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /** * 通过节假日代码获取指定的日期[查找基…

深入鸿蒙开发-OpenHarmony高性能开发的三位一体

OpenHarmony LazyForEach ArkUI 高性能 OpenHarmony应用性能优化概览 核心思想 我们相信时间以线性存在,它持续不变地进行,直到无穷无尽。 但过去、现在和未来的不同,昨日、今日和明日可能不是连贯的,而是互相组合的永无止尽的循环…

android查漏补缺(6)android相关属性

一、Android相关属性的介绍 1.android:exported true 在Activity中该属性用来标示:当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动。

Java学习之Java基础部分知识点

Java基础 一、Java语言具有哪些特点? Java为纯面向对象的语言。它能够直接反应现实生活中的对象。具有平台无关性。java利用Java虚拟机运行字节码,无论是在Windows、Linux还是MacOS等其它平台对Java程序进行编译,编译后的程序可在其它平台运…

drawio简介以及下载安装

drawio简介以及下载安装 drawio是一款非常强大的开源在线的流程图编辑器,支持绘制各种形式的图表,提供了 Web端与客户端支持,同时也支持多种资源类型的导出。 访问网址:draw.io或者直接使用app.diagrams.net直接打开可以使用在线版…

STM32 裸机编程 03

MCU 启动和向量表 当 STM32F429 MCU 启动时,它会从 flash 存储区最前面的位置读取一个叫作“向量表”的东西。“向量表”的概念所有 ARM MCU 都通用,它是一个包含 32 位中断处理程序地址的数组。对于所有 ARM MCU,向量表前 16 个地址由 ARM …

VSCode搭建ESP32 ESP-IDF开发环境-Windows

陈拓 2023/10/09-2023/10/14 1. 安装Windows系统下的ESP32 ESP-IDF开发环境 见《Windows系统安装ESP32 ESP-IDF开发环境》 Windows系统安装ESP32 ESP-IDF开发环境-CSDN博客Windows系统安装ESP32 ESP-IDF开发环境。https://blog.csdn.net/chentuo2000/article/details/1339225…

迅为RK3588开发板使用RKNN-Toolkit-lite2运行测试程序

1 首先也需要部署运行环境,将库文件放入 RK3588 开发板上,我们将网盘资料“iTOP-3588 开发 板 \02_ 【 iTOP-RK3588 开 发 板 】 开 发 资 料 \12_NPU 使 用 配 套 资 料 \05_Linux_librknn_api\librknn_api\aarch64”路径下的文件通过U盘拷贝到开发板的…

AI AIgents时代-(五.)Autogen

由微软开发的 Autogen 是一个新的 Agents 项目,刚一上线就登上GitHub热榜,狂揽11k星✨✨✨ 项目地址:https://github.com/microsoft/autogen Autogen 允许你根据需要创建任意数量的Agents,并让它们协同工作以执行任务。它的独特之…

stable-diffusion-webui sdxl模型代码分析

采样器这块基本都是用的k-diffusion,模型用的是stability的原生项目generative-models中的sgm,这点和fooocus不同,fooocus底层依赖comfyui中的models,comfy是用load_state_dict的方式解析的,用的load_checkpoint_guess…

实时精准 自我防护 | 开源网安RASP平台能力获客户认可!

近日,开源网安收到了一封来自华润数科的感谢信,表达了对开源网安团队在网络安全工作中给予大力支持的衷心感谢。开源网安十分注重客户的需求和信任,客户的满意和认可是开源网安最大的追求。 在助力华润数科网络安全工作开展过程中&#xff0c…

nextjs-一个基于React的全栈框架

一、nextjs基本介绍 Next.js是一个基于React的轻量级框架,用于构建React应用程序。它在React的基础上提供了一些增强功能,包括服务器渲染(SSR)、静态生成(SSG)、路由等。Next.js的目标是简化React应用程序…

十八、字符串(1)

本章概要 字符串的不可变 的重载与 StringBuilder 意外递归字符串操作 字符串操作毫无疑问是计算机程序设计中最常见的行为之一。 在 Java 大展拳脚的 Web 系统中更是如此。在本章中,我们将深入学习在 Java 语言中应用最广泛的 String 类,并研究与之相关…

pymysql连接Mariadb/Mysql出现错误(配置正确情况下)解决办法

场景:在kali中使用python中pymysql对Mariadb进行连接,在整个过程中配置全部正确,但是就是无法进行连接,提示结果如下: Access denied for user rootlocalhost解决办法:进入数据库中,将默认密码…

实验室烧杯可以用超声波清洗机吗

实验室烧杯可以用超声波清洗机吗?答案是可以的!超声波清洗机不仅可以清洗实验烧杯,还可以用于清洗实验室中的试管、培养皿、移液管、载玻片、容量瓶、锥形瓶等各类实验器皿。在实验中,如果烧杯清洁不到位,会使得实验数…

边缘服务器的未来是什么?思考 5G 和 AI 需求

什么是边缘服务器 边缘服务器是一种分布式计算模式,旨在提高数据中心和云服务的效率,并解决设备之间通信的延迟问题。它将业务从中央数据中心转移到边缘设备附近,将计算、存储和网络资源靠近终端用户和设备,以实现更快速的数据处…