当前位置: 首页 > news >正文

前端性能优化之加载篇

前端页面加载的过程其实跟我们常常提起的浏览器页面渲染流程几乎一致:

  1. 网络请求,服务端返回 HTML 内容。

  2. 浏览器一边解析 HTML,一边进行页面渲染。

  3. 解析到外部资源,会发起 HTTP 请求获取,加载 Javascript 代码时会暂停页面渲染。

  4. 根据业务代码加载过程,会分别进入页面开始渲染、渲染完成、用户可交互等阶段。

  5. 页面交互过程中,会根据业务逻辑进行逻辑运算、页面更新。

那么,我们可以针对其中的每个步骤做优化,主要包括:资源获取、资源加载、页面可见、页面可交互。

一、资源获取

资源获取主要可以围绕两个角度做优化:

  • 资源大小

  • 资源缓存

1.1 资源大小

一般来说,前端都会在打包的时候做资源大小的优化,资源类型包括 HTML、JavaScript、CSS、图片等。优化的方向包括:

(1) 合理的对资源进行分包。

首次渲染时只保留当前页面渲染需要的资源,将可以异步加载、延迟加载的资源拆离。通常我们会在代码编译打包的时候做处理,比如

相关文章:

前端性能优化之加载篇

前端页面加载的过程其实跟我们常常提起的浏览器页面渲染流程几乎一致: 网络请求,服务端返回 HTML 内容。 浏览器一边解析 HTML,一边进行页面渲染。 解析到外部资源,会发起 HTTP 请求获取,加载 Javascript 代码时会暂停页面渲染。 根据业务代码加载过程,会分别进入页面开始…...

数据结构(栈)

每当误会消除冰释前嫌的时候,故事就距离结尾不远了。 栈 概念与结构 1. 栈⼀种特殊的线性表,其只允许在固定的⼀端进行插入和删除元素操作。 2. 进行数据插入和删除操作的⼀端称为栈顶,另⼀端称为栈底。 3. 栈中的数据元素遵守后进先出的原则…...

Aspose.PDF功能演示:使用 JavaScript 从 PDF 中提取文本

在数据提取、业务文档自动化和文本挖掘方面,使用 JavaScript 从PDF中提取文本非常有用。它允许开发人员自动执行从 PDF 收集信息的过程,从而显著提高处理大量文档的生产力和效率。在这篇博文中,我们将学习如何使用 JavaScript 从 PDF 中提取文…...

计算机系统简介

一、计算机的软硬件概念 1.硬件:计算机的实体,如主机、外设、硬盘、显卡等。 2.软件:由具有各类特殊功能的信息(程序)组成。 系统软件:用来管理整个计算机系统,如语言处理程序、操作系统、服…...

学习文档10/18

MySQL高性能优化规范: 数据库命名规范 所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意…...

Redis入门到精通(二):入门Redis看这一篇就够了

文章目录 一、Redis的双写一致性1.延迟双删2.添加分布式锁3.异步监听可靠消息基于MQ消息队列的异步监听基于Canal的异步通知 二、Redis的持久化持久化流程1.RDB机制1.1save1.2bgsave1.3自动触发 2.AOF机制三种触发机制3.RDB和AOF的对比 三、Redis的数据删除策略1.惰性删除2.定期…...

荒岛逃生游戏

题目描述 一个荒岛上有若干人,岛上只有一条路通往岛屿两端的港口,大家需要逃往两端的港口才可逃生。 假定每个人移动的速度一样,且只可选择向左或向右逃生。 若两个人相遇,则进行决斗,战斗力强的能够活下来&#xff…...

玫瑰花HTML源码

HTML源码 <pre id"tiresult" style"font-size: 9px; background-color: #000000; font-weight: bold; padding: 4px 5px; --fs: 9px;"><b style"color:#000000">0010000100000111101110110111100010000100000100001010111111100110…...

【wpf】07 后端验证及令牌码获取步骤

由于在用wpf开发应用程序时&#xff0c;从后端获取数据需要用到 Authorization 授权的Bearer令牌&#xff0c;而这个令牌的获取需要登录后台进行获取&#xff0c;这里登录时还涉及到的验证码的操作&#xff0c;所以在获取过程中&#xff0c;需要对后台系统进行登录并拿到这个Be…...

学习中,师傅b站泷羽sec——xss挖掘过程

某职业技术学院网站xss挖掘&#xff1a; 资产归纳 例如&#xff1a;先把功能点都看一遍&#xff0c;大部分都是文章 根据信息搜集第一课学习到一般主站的防御力是比较强的&#xff0c;出现漏洞的点不是对新手不友好。 在资产验证过程中还是把主站看了一遍 没有发现有攻击的机会…...

什么是双因素身份验证?双因素身份验证的凭据类型有哪些?

w微服务在数字化的时代&#xff0c;保护个人和企业的敏感信息至关重要。双因素身份验证&#xff08;Two-Factor Authentication&#xff0c;简称 2FA&#xff09;作为一种增强安全性的方法&#xff0c;越来越受到广泛关注。那么&#xff0c;什么是双因素身份验证呢&#xff1f;…...

【MR开发】在Pico设备上接入MRTK3(一)——在Unity工程中导入MRTK3依赖

写在前面的话 在Pico上接入MRTK3&#xff0c;目前已有大佬开源。 https://github.com/Phantomxm2021/PicoMRTK3 也有值得推荐的文章。 MRTK3在PICO4上的使用小结 但由于在MacOS上使用MRTK3&#xff0c;无法通过Mixed Reality Feature Tool工具管理MRTK3安装包。 故记录一下…...

利用移动式三维扫描技术创建考古文物的彩色纹理网格【上海沪敖3D】

文章来源于蔡司工业质量解决方案&#xff0c;作者蔡司工业质量 在考古环境中&#xff0c;三维扫描技术应用广泛&#xff0c;如存档、保存、复制和分享&#xff08;包括实体和虚拟形式&#xff09;。 文中&#xff0c;通过真实的扫描案例&#xff0c;您将了解到三维光学解决方案…...

Spring AI Java程序员的AI之Spring AI(四)

Spring AI之Java经典面试题智能小助手 前言一、准备面试题二、搭建工程三、文件读取与解析四、Markdown文件解析五、问题搜索六、自定义EmbeddingClient七、定义请求Controller 前言 通过Ollama在本地部署了Llama3大模型&#xff0c;这篇来基于Llama3和Spring AI&#xff0c;以…...

精选20个爆火的Python实战项目(含源码),直接拿走不谢!

今天给大家介绍20个非常实用的Python项目&#xff0c;帮助大家更好的学习Python。 完整版Python项目源码&#xff0c;【点击这里】领取&#xff01; ① 猜字游戏 import random def guess_word_game(): words ["apple", "banana", "cherry&quo…...

Rocky Linux 9安装Asterisk 20和freepbx 17脚本——筑梦之路

脚本搜集来自Rocky Linux 9安装Asterisk 20和freepbx 17脚本 #!/bin/bash#Preparacion de ambiente de RockyLinuxecho "Deshabilitar SELINUX /etc/selinux/config "sed -i s/^SELINUX.*$/SELINUXdisabled/ /etc/selinux/configecho "Establecer nombre de maq…...

PSPICE FOR TI笔记记录1

快捷放置器件 R旋转 连线 w,单击器件引脚方块部分 电压探测笔 创建仿真文件 Analysis Type 分析模式&#xff1a;比如时域分析&#xff0c;频域分析 Run To Time 仿真时长 Skip intial transient bias point calculation (跳过初始瞬态偏置点计算(SKIPBP))一定要勾选 编辑…...

Java集合剖析4】LinkedList

目录 一、LinkedList的特有方法 二、LinkedList的底层数据结构 三、插入方法的具体实现 一、LinkedList的特有方法 LinkedList的底层是双向链表&#xff0c;它提供了操作首尾结点的方法 二、LinkedList的底层数据结构 LinkedList的底层是一个双向链表&#xff0c;有一个结点内部…...

基于MATLAB/octave的容积卡尔曼滤波(CKF)【带逐行注释】

介绍 CKF的三维滤波程序例程 产品概述 我们的 MATLAB 数据处理工具是专为科研人员、工程师和数据分析师设计的高效解决方案。该工具提供了一系列强大的功能&#xff0c;能够快速处理和分析大规模数据集&#xff0c;适用于各种科学和工程应用&#xff0c;包括信号处理、图像分…...

Python编程探索:从基础语法到循环结构实践(下)

文章目录 前言&#x1f377;四、 字符串拼接&#xff1a;连接多个字符串&#x1f378;4.1 使用 操作符进行字符串拼接&#x1f378;4.2 使用 join() 方法进行字符串拼接&#x1f378;4.3 使用 format() 方法进行格式化拼接&#x1f378;4.4 使用 f-string&#xff08;格式化字…...

Simulink仿真避坑指南:如何设置步长、powergui和模块采样时间才能让控制周期更稳定

Simulink控制系统仿真参数配置实战&#xff1a;从步长到采样时间的精准调优 在电机控制、电力电子系统等工业仿真场景中&#xff0c;Simulink参数的合理配置直接决定了仿真结果的可靠性与工程指导价值。许多工程师第一次搭建控制系统模型时&#xff0c;往往被各种时间参数搞得晕…...

Lychee-Rerank参数详解:instruction模板设计技巧(含法律/医疗/金融领域示例)

Lychee-Rerank参数详解&#xff1a;instruction模板设计技巧&#xff08;含法律/医疗/金融领域示例&#xff09; 1. 工具核心原理与价值 Lychee-Rerank是一个基于Qwen2.5-1.5B模型的本地检索相关性评分工具&#xff0c;专门用于评估查询语句与文档内容之间的匹配程度。与云端…...

3步构建智能象棋分析系统:为教练与学习者打造实时战术辅助工具

3步构建智能象棋分析系统&#xff1a;为教练与学习者打造实时战术辅助工具 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi 问题象限&#xff1a;象棋数字化…...

如何在Windows电脑上轻松安装安卓应用?APK Installer完整使用指南

如何在Windows电脑上轻松安装安卓应用&#xff1f;APK Installer完整使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为无法在电脑上运行手机应用而烦恼吗…...

SimpleX协议标准化之路:终极隐私通信的完整指南

SimpleX协议标准化之路&#xff1a;终极隐私通信的完整指南 SimpleX是全球首个完全不需要任何用户标识符的通信平台&#xff0c;为隐私保护设立了新的标准。作为100%隐私设计理念的先行者&#xff0c;SimpleX通过其革命性的协议架构&#xff0c;彻底改变了我们对安全通信的认知…...

Bootbox.js异步回调处理终极指南:确保对话框操作的正确执行顺序

Bootbox.js异步回调处理终极指南&#xff1a;确保对话框操作的正确执行顺序 【免费下载链接】bootbox Wrappers for JavaScript alert(), confirm() and other flexible dialogs using Twitters bootstrap framework 项目地址: https://gitcode.com/gh_mirrors/bo/bootbox …...

郭老师-人生最顶级的活法:三句古训,一生受用

人生最顶级的活法 ——藏在《道德经》里的三句真言“老祖宗早就把答案写好了&#xff0c; 只是你一直忙着刷手机&#xff0c;没看见。”&#x1f33f; 真正的自由&#xff0c; 不是拥有更多&#xff0c; 而是—— 需要更少&#xff0c;看清更多&#xff0c;止于恰到好处。&…...

打印机租赁行业迷局:繁荣表象下的“三座大山”

2025年&#xff0c;中国打印机租赁市场规模已突破187.6亿元&#xff0c;产业链上下游企业多达10万余家。表面看&#xff0c;这是一片欣欣向荣的蓝海。然而&#xff0c;繁荣之下&#xff0c;行业正被“三座大山”压得喘不过气。行业现状&#xff1a;数据繁荣&#xff0c;内卷加剧…...

DeepChat案例分享:供应链异常描述→根因推测→应急方案建议三级输出

DeepChat案例分享&#xff1a;供应链异常描述→根因推测→应急方案建议三级输出 1. 案例背景与场景价值 供应链管理是企业运营的核心环节&#xff0c;但异常情况时有发生。传统的异常处理流程往往需要多个部门协作&#xff0c;耗时耗力且容易出错。DeepChat基于本地部署的Lla…...

边走边聊 Python 3.8:Chapter 3:控制流与循环

Chapter 3:控制流与循环 程序的逻辑由控制流决定,而循环则让程序拥有“重复的力量”。本章将带你理解 if、for、while 背后的思维方式,掌握 Python 独有的 for-else 结构,并通过实际案例让你真正体会“程序为什么这样走”。当你能控制程序的节奏,你就能让代码按你的意图行…...