Web 性能入门指南-3.5 优化单页应用程序 (SPA)

news2024/9/20 12:33:30

🌸 欢迎来到前端后花园!这里是一个温馨的小角落,专为热爱前端技术的你打造。没有华丽的辞藻,只有真诚的分享。希望你能在这里找到实用的内容,学到新知识,同时也欢迎你畅所欲言,分享你的思考和见解。
Web 性能入门指南专栏:我们将一起探讨如何提升网站的性能,从监控到分析,再到诊断和优化,每一步都力求实用、有效。让我们一起努力,让每一个网页都能以最佳状态展现在用户面前。🌱💻

单页应用程序 (SPA) 具有独特的页面速度优化挑战。让我们来看看 SPA 的一些常见 Web 性能问题,以及如何优化它们。

https://blog-img.speedcurve.com/img/501/spa.gif?auto=format,compress&fit=max&w=2000

传统网页(有时称为多页应用程序或 MPA)通过允许用户导航到不同的页面来工作,而单页应用程序 (SPA) 则通过使用 JavaScript 在应用程序的不同部分之间执行页内转换来工作。

关键区别在于,在 MPA 中,浏览器在每个页面之间执行完整导航。在 SPA 中,应用程序负责加载新内容并将其显示在页面上。

因此,SPA 通常要求用户在初始页面加载时下载更多 JavaScript。它们不仅需要当前页面的 JavaScript,还需要处理页面间转换的 JavaScript。

减少页面上的 JavaScript 数量

在网页的所有资源类型中,JavaScript 对页面性能的影响是最大的。减少页面上的 JavaScript 数量可以改善几乎所有页面速度指标,包括最大内容绘制 (LCP)、下一次绘制交互 (INP) 和总阻塞时间 (TBT)。

大多数性能工具都认识到了这一点。例如,当 JavaScript 执行时间超过 2 秒时,Lighthouse 会发出警告,而当 JavaScript 执行时间超过 3.5 秒时,审核失败。

有多种方法可以减少页面上的 JavaScript 数量:

  • 代码分割 JavaScript以仅发送用户需要的内容。

  • 缩小 JavaScript压缩 HTTP 响应以减少总负载大小。

  • 删除未使用的 JavaScript以减少有效负载大小以及编译、解析和执行时间。

尽可能在服务器上呈现页面内容

通过在服务器上渲染尽可能多的内容,可以改善 SPA 中的“最大内容绘制”等指标。这样,浏览器就可以在后台加载 SPA 的 JavaScript 时向用户显示他们正在寻找的内容。

预加载用户可能需要的资源

当浏览器必须下载新资源时,SPA 中的页面转换可能会很慢。您可以通过智能地预加载用户可能很快需要的资源来缓解这种情况。例如,您可以在用户将鼠标悬停在链接或按钮上时开始加载资源,而不是等到他们点击它。

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

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

相关文章

【Linux学习 | 第1篇】Linux介绍+安装

文章目录 Linux1. Linux简介1.1 不同操作系统1.2 Linux系统版本 2. Linux安装2.1 安装方式2.2 网卡设置2.3 安装SSH连接工具2.4 Linux和Windows目录结构对比 Linux 1. Linux简介 1.1 不同操作系统 桌面操作系统 Windows (用户数量最多)MacOS ( 操作体验好,办公人…

jenkins替换配置文件

1.点击首页的【Manage Jenkins】-【Manage Plugins】,在选项【Available plugins】安装 Config File Provider Plugin ,安装后重启jenkins 2.安装完成后会有这个图标,点进去 3.点击新建,选择自定义,填入要替换的文件…

C语言 | Leetcode C语言题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; /* 求和运算 */ /* 对[0,n]求和, 减去数组每个元素, 得出丢失的元素 */ int missingNumber(int* nums, int numsSize){int i;int sum numsSize;for (i 0; i < numsSize; i) {sum i - nums[i];}return…

【Spring】SpringRetry重试机制和Spring异步任务发送操作结合应用场景实操,通俗易懂

平时调用一些第三方接口或者内部接口&#xff0c;可能出现处理异常或者超时或者意外因素&#xff0c;我们可以使用重试机制来为用户提高体验。 1.引用依赖 <dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</a…

【单片机毕业设计选题24079】-基于单片机的室内通风系统

系统功能: 系统分为手动和自动模式&#xff0c;上电默认为自动模式&#xff0c;自动模式下系统根据采集到的传感器值 自动控制&#xff0c;温度过低后自动开启加热&#xff0c;湿度过低后自动开启继电器加湿&#xff0c;获取到烟雾值大于设定值或获取到的CO值大于设定的CO值时…

视图,存储过程和触发器

目录 视图 创建视图&#xff1a; 视图的使用 查看库中所有的视图 删除视图 视图的作用&#xff1a; 存储过程&#xff1a; 为什么使用存储过程&#xff1f; 什么是存储过程&#xff1f; 存储过程的创建 创建一个最简单的存储过程 使用存储过程 删除存储过程 带参的存储…

【已解决 Python】 TypeError: can only concatenate list (not “int”) to list

【已解决 Python】 TypeError: can only concatenate list (not “int”) to list 在Python编程中&#xff0c;TypeError: can only concatenate list (not "int") to list是一个常见的错误。此错误表明你尝试将一个整数&#xff08;int&#xff09;与列表&#xff…

初识redis:通用命令

今天我们简单介绍一些关于redis的基础命令。 目录 get 和 set 全局命令 keys EXISTS del&#xff08;delete&#xff09; expire TTL Redis的key过期策略是怎么实现的&#xff1f; type get 和 set 连接到云服务器后&#xff0c;通过redis-cli命令进入到redis客户端…

7月21日读Neuroimage Denoiser

Neuroimage Denoiser for removing noise from transient 1 fluorescent signals in functional imaging. Summary Neuroimage Denoiser&#xff0c;这是一种新型的基于U-Net的模型&#xff0c;可以有效去除显微镜记录中瞬时局部荧光信号的噪声。该模型使去噪过程与记录频率和…

sql注入 mysql 执行命令 sql注入以及解决的办法

我们以前很可能听过一个词语叫做SQL注入攻击&#xff0c;其是威胁我们系统安全的最危险的因素之一&#xff0c;那么到底什么是SQL注入攻击呢&#xff1f;这里我会用一个最经典最简单的例子来跟大家解释一下&#xff1a; 众所周知&#xff0c;我们的sql语句都是有逻辑的&#xf…

Python爬虫:代理ip电商数据实战

引言&#xff1a;数据访问管理引发的烦恼 作为一名Python博主&#xff0c;爬虫技能对于获取和分析数据至关重要&#xff0c;经常爬一下&#xff0c;有益身心健康嘛。爬虫技术对很多人来说&#xff0c;不仅仅是一种工具&#xff0c;更像是一种艺术&#xff0c;帮助我们从互联网…

大模型入门学习笔记(非常详细)零基础入门到精通,收藏这一篇就够了

一、认识大模型 1.1 从人工智能到大模型的演变 学完本文后&#xff0c;你将能够&#xff1a; 掌握大模型的特点、重要概念以及工作方式 了解大模型的基本概况和产品矩阵 了解大模型&#xff0c;尤其是大语言模型的应用场景和示例 大模型是人工智能领域的一个重要里程碑&a…

C++相关概念和易错语法(23)(set、仿函数的应用、pair、multiset)

1.set和map存在的意义 &#xff08;1&#xff09;set和map的底层都是二叉搜索树&#xff0c;可以达到快速排序&#xff08;当我们按照迭代器的顺序来遍历set和map&#xff0c;其实是按照中序来遍历的&#xff0c;是排过序的&#xff09;、去重、搜索的目的。 &#xff08;2&a…

展馆导览系统架构解析,从需求分析到上线运维

在物质生活日益丰富的当下&#xff0c;人们对精神世界的追求愈发强烈&#xff0c;博物馆、展馆、纪念馆等场所成为人们丰富知识、滋养心灵的热门选择。与此同时&#xff0c;人们对展馆的导航体验也提出了更高要求&#xff0c;展馆导览系统作为一种基于室内外地图相结合的位置引…

STM32智能农业监测与控制系统教程

目录 引言环境准备智能农业监测与控制系统基础代码实现&#xff1a;实现智能农业监测与控制系统 4.1 数据采集模块 4.2 数据处理与分析模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;农业监测与优化问题解决方案与优化收尾与总结 1. 引言 智能农…

电脑基础知识 | 电脑的基本组成

电脑作为我们日常工作和娱乐的重要工具&#xff0c;扮演着举足轻重的角色。当我们谈论电脑的基本组成时&#xff0c;其实是在探讨电脑硬件和软件两个核心部分。硬件是电脑看得见、摸得着的物理设备&#xff0c;而软件则是运行在这些硬件之上的程序和指令。两者相辅相成&#xf…

深入浅出mediasoup—WebRtcTransport

mediasoup 提供了多种 transport&#xff0c;包括 WebRtcTransport、PipeTransport、DirectTransport、PlainTransport 等&#xff0c;用来实现不同目的和场景的媒体通信。WebRtcTransport 是 mediasoup 实现与 WebRTC 客户端进行媒体通信的对象&#xff0c;是 mediasoup 最重要…

Electron案例解析——切换主题颜色的案例

效果图 核心 Electron的 nativeTheme.themeSource属性&#xff0c;值是string。有三个参数&#xff1a;system, light 和 dark&#xff0c;用来覆盖、重写Chromium内部的相应的值 Election的api描述值nativeTheme.themeSource被用来覆盖、重写Chromium内部的相应的值system, …

swagger-ui.html报错404

问题1&#xff1a;权限受限无法访问 由于采用的Shiro安全框架&#xff0c;需要在配置类ShiroConfig下的Shiro 的过滤器链放行该页面&#xff1a;【添加&#xff1a;filterChainDefinitionMap.put("/swagger-ui.html", "anon");】 public ShiroFilterFact…

springboot失物招领论坛系统-计算机毕业设计源码56603

目 录 1 绪论 1.1 研究背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 系统流程…