前端--性能优化【上篇】--网络优化与页面渲染优化
一、网络优化
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)来实现。它允许开发人员将任务分解为小块,并在空闲时间执行,以避免主线程被占用。
时间切片常用于:
- 大规模数据的渲染
- 复杂的计算或数据处理
- 异步请求的处理
- 动画和交互的流畅性维护
可以解决以下四种问题:
- 降低主线程压力:长时间运行的任务,如大型计算或复杂的数据处理,会占用主线程,导致页面失去响应性。
- 提高用户体验:通过将任务拆分成小块,时间切片可以确保用户界面在执行任务的同时保持流畅,不会出现卡顿或阻塞。
- 优化任务并发:时间切片可以更好地管理并发任务,确保任务不会相互干扰。
- 降低电池消耗:通过将任务分散到多个时间片段,时间切片可以减少CPU的使用,延长移动设备的电池寿命。
2、虚拟列表
虚拟列表通常运行在前端的UI层,主要用于提高前端渲染性能。虚拟滚动技术只渲染可见区域内的数据,而不是全部数据,从而提高性能。这可以通过使用虚拟滚动库
(如react-window、vue-virtual-scroller)来实现
些库会在前端应用的UI层处理数据的显示,通过动态渲染DOM元素来提高性能。
3、分页+异步
分页异步加载通常涉及到前端应用与后端服务器之间的通信。在这种情况下,前端应用通常会发出分页请求,然后后端服务器根据请求来提供相应的数据页。这种分页请求通常是异步的,通常使用AJAX、Fetch或类似的机制。分页异步加载会涉及到前端应用的业务逻辑层,以便发送请求和处理响应。前端应用通常会将从服务器获取的数据渲染到虚拟列表或其他UI组件中。
在请求头中添加page字段,来向后端获取具体需要的页码内容
虚拟列表通常在前端的UI层运行,用于提高前端渲染性能,而分页异步加载涉及前端应用的业务逻辑层和与后端服务器的通信,用于获取分页数据。两者可以结合使用,以在前端显示大量数据并实现分页加载。
相关文章:
前端--性能优化【上篇】--网络优化与页面渲染优化
一、网络优化 1、DNS预解析 link标签的rel属性设置dns-prefetch,提前获取域名对应的IP地址 2、CDN(网络分发系统) 用户与服务器的物理距离对响应时间也有影响。 内容分发网络(CDN)是一组分散在不同地理位置的 web…...
git 删除分支
目录 1,查看分支2,删除本地分支3,删除远程分支 1,查看分支 # 查看本地分支 git branch# 查看远程分支 git branch -r# 查看所有分支 git branch -a2,删除本地分支 # -d 是 --delete 的简写,会在删除前检查…...
SQLite Write-ahead Logging
1. 概述2. WAL如何工作 2.1 检验指示(Checkpointing)2.2 并发性(Concurrency)2.3 性能考虑(Performance Considerations)3. 激活并配置WAL模式 3.1 自动checkpoint3.2 应用开始的checkpoint3.3 WAL模式的持久性4. 只读数据库5. 避免过大的WAL文件6. WAL索引的共享内存应用7. 不…...
手机有什么爬虫App工具?
随着智能手机的普及和应用的繁盛,越来越多的人开始对手机App进行数据爬取和分析。那么,在进行手机App爬虫的过程中,我们可以借助哪些工具呢?让我们一起来了解一下吧! 1、Fiddler Fiddler是一款功能强大的网络调试工具…...
290_C++_截取的一部分FTP视频上传代码,任务信息中读取视频帧数据并将其提供给 libcurl 用于上传。
1、这些结构体和枚举类型的设计是为了在上传过程中有效地存储和传递不同类型的任务信息,以便在上传操作中使用这些信息来管理和跟踪不同类型的上传任务。它们提供了不同类型上传任务所需的特定信息和状态变量 enum UploadTaskType {UTT_Common,UTT_Video };struct UploadInfo…...
读《Gaitset: Regarding gait as a set for cross-view gait recognition》
2019在AAAI(还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition,大体上一样) 摘要 现有的步态识别方法要么利用步态模板,难以保存时间信息,要么利用保持不必要的顺序约束的步态序列&#x…...
驱动实现LED点灯
demo.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h" //定义三个指针指向映射后的虚拟内存 unsigned int *vir_moder; unsigned …...
【Reinforcement Learning】Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决
Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决 本文根据一篇知乎文章链接在此进行配置,记录在配置过程中遇到的一些问题,原文作者的教程很详细,在此对原作者表示感谢~ 直接进行知乎原文的第2.2 有效安装过程(避坑) 2.注意上…...
设计模式截图记录
设计模式截图记录...
代碼隨想錄算法訓練營|第三十九天|738.单调递增的数字、968.监控二叉树、第八章 贪心算法總結。刷题心得(c++)
目录 讀題 738.单调递增的数字 自己看到题目的第一想法 看完代码随想录之后的想法 968.监控二叉树 自己看到题目的第一想法 看完代码随想录之后的想法 738.单调递增的数字 - 實作 思路 Code 968.监控二叉树 - 實作 思路 Code 贪心算法 總結 贪心理论基础 貪心…...
前言:自动化框架的设计模式
1、UI自动化框架的设计模式 自动化测试框架有很多种,常见的自动化框架分类如下: 在使用上面的自动化框架时,通常会结合使用分层思想,也就是一些自动化框架设计模式,今天重点分享一下UI自动化框架设计使用比较多的一种…...
Web架构安全分析/http/URL/Cookie攻击
Web 架构安全分析 Web 工作机制及基本概念 传统 Web 架构 LAMP 网页 概念 网页就是我们可以通过浏览器上网看到的精美页面,一般都是经过浏览器渲染过的 .html 页面,html 语言在浏览器中渲染。其中包含了CSS、JavaScript 等前端技术。通过浏览器访问…...
.git 目录中有什么?
好吧,我想你们中的大多数人每天都或多或少地使用 git,但是您是否研究过 git 创建的 .git 文件夹中的内容?本文[1]我们将一起探索一下,了解里面到底发生了什么。 ❝ git 在基本层面上只是一堆通过文件名相互链接的文本文件。 ❞ in…...
Debian11系统简单配置
debian11系统简单配置 网卡配置 修改/etc/network/interfaces address 192.168.0.188 gateway 192.168.0.1 netmask 255.255.255.0重启网卡systemctl restart networking.service systemctl restart networking 执行apt 报错 rootdebian:~# apt update 忽略:1 cdrom://[D…...
家装、家居两不误,VR全景打造沉浸式家装体验
当下,用户对生活品质要求日益提升,越来越多的用户对多功能家装用品需求较大,由此造就了VR全景家装开始盛行。VR全景家装打破传统二维空间模式,通过视觉、交互等功能让用户更加真实、直观的体验和感受家居布置的效果。 一般来说&am…...
Ubuntu服务器 Clash Dashboard
正文发不出来 链接:【Linux】解决Ubuntu服务器版本无法使用Clash Dashboard的问题 这个图展示了RNA-Seq实验数据生成的流程。下面是该流程的逐步解释: mRNA或总RNA提取:首先,从细胞或组织样本中提取mRNA或总RNA。mRNA是经过剪切…...
创建数据库表的命令
创建数据库表的通用语法: CREATE TABLE table_name (column1 datatype constraint,column2 datatype constraint,...columnN datatype constraint ); 其中,table_name 为要创建的表名,column1 到 columnN 为表的列名,datatype …...
ubuntu18.04 LTS卸载qtcreator-10.0.2
之前通过命令,通过.run文件,安装了Qt Creator 默认安装路径是/opt/ 卸载 在安装路径下,可以看到QtCreatorUninstaller文件 命令行运行该执行文件,会弹出卸载窗口,记得勾选下面的“仅卸载”...
通过字符设备驱动并编写应用程序控制三盏灯亮灭
现象 键盘按1三灯全亮 按0三灯全灭 头文件.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#defin…...
SpringCloud链路追踪——Spring Cloud Sleuth 和 Zipkin 介绍 Windows 下使用初步
前言 在微服务中,随着服务越来越多,对调用链的分析越来越复杂。如何能够分析调用链,定位微服务中的调用瓶颈,并对其进行解决。 本篇博客介绍springCloud中用到的链路追踪的组件,Spring Cloud Sleuth和Zipkin…...
oracle 收缩数据文件 datafile
SELECTdf.tablespace_name,df.file_id,df.file_name,df.AUTOEXTENSIBLE,df.bytes / 1024 / 1024 / 1024 AS current_size_gb,e.max_block * 8192 /1024/ 1024 / 1024 AS current_used_gb, -- 实际用到的位置ROUND((df.bytes - e.max_block * 8192) / 1024 / 1024 / 1024, 2) A…...
别再怕浪涌了!手把手教你用光耦和比较器给220V交流电做‘心脏监护’(过零检测实战)
别再怕浪涌了!手把手教你用光耦和比较器给220V交流电做‘心脏监护’(过零检测实战) 当你在深夜调试智能调光开关时,突然听到"啪"的一声火花声,那种心惊肉跳的感觉我至今难忘。那次经历让我深刻认识到&#x…...
Win11Debloat:3分钟完成Windows系统优化,告别臃肿与广告困扰
Win11Debloat:3分钟完成Windows系统优化,告别臃肿与广告困扰 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to…...
手把手教你搞定PC网站支付宝扫码登录(React + Antd 实战)
React Antd 实战:支付宝扫码登录全流程解析与优化 在PC端Web应用中集成第三方登录已成为提升用户体验的标配功能。作为国内使用率最高的支付平台之一,支付宝扫码登录不仅能降低用户注册门槛,还能有效提升转化率。本文将基于React技术栈&…...
LSM-Tree存储引擎优化实战:用Cuckoo Filter替代Bloom Filter,降低LevelDB/RocksDB读放大
LSM-Tree存储引擎深度优化:用Cuckoo Filter重构LevelDB/RocksDB查询路径 在LSM-Tree存储引擎的世界里,读放大问题就像一把悬在头顶的达摩克利斯之剑。每次点查询都可能触发从MemTable到多层SSTable的级联查找,而传统Bloom Filter的局限性让这…...
【私藏级微调工作流】:一位资深MLOps工程师压箱底的4步标准化Pipeline(含自动量化+梯度检查点+动态Batch优化)
更多请点击: https://intelliparadigm.com 第一章:私藏级微调工作流的工程哲学与落地价值 微调不是模型能力的简单叠加,而是数据、算力与工程直觉三者耦合的精密系统工程。真正的“私藏级”工作流,其核心在于将实验迭代、版本控…...
3步解锁完整视觉体验:UniversalUnityDemosaics去马赛克插件完全指南
3步解锁完整视觉体验:UniversalUnityDemosaics去马赛克插件完全指南 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUn…...
Android系统开发工程师(SW)偏SDK方向职位解析与面试指南
一、职位概述 1.1 工作职责总览 Android系统开发工程师偏SDK方向,是Android开发领域的关键角色,承担着丰富且重要的职责。 首要任务便是负责Android终端或平板系统的开发及维护工作。这意味着需要对Android系统的架构有深入的理解,能够确保系统的稳定运行,及时修复出现的…...
Copilot Next企业级配置全解析,从权限沙箱到审计日志闭环——已验证支撑200+微服务团队的7层安全策略
更多请点击: https://intelliparadigm.com 第一章:Copilot Next企业级配置全景概览 Copilot Next 是微软面向企业客户推出的增强型 AI 编程助手平台,其企业级配置体系覆盖身份治理、策略控制、数据隔离、审计合规与模型定制五大核心维度。与…...
YOLOv8与nli-MiniLM2-L6-H768联合作业:图像描述文本的合规性审核
YOLOv8与nli-MiniLM2-L6-H768联合作业:图像描述文本的合规性审核 1. 社交平台面临的内容审核挑战 每天有数以亿计的图片在社交平台上被上传和分享,如何高效准确地识别其中的违规内容成为平台运营者的头号难题。传统人工审核团队面临三大困境࿱…...
