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

🌸 欢迎来到前端后花园!这里是一个温馨的小角落,专为热爱前端技术的你打造。没有华丽的辞藻,只有真诚的分享。希望你能在这里找到实用的内容,学到新知识,同时也欢迎你畅所欲言,分享你的思考和见解。
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.mzph.cn/diannao/48891.shtml

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

相关文章

【Linux 13】文件系统

文章目录 🌈 一、前言🌈 二、文件操作的系统接口⭐ 1. 打开文件 open⭐ 2. 关闭文件 close⭐ 3. 写入文件 write⭐ 4. 读取文件 read 🌈 三、文件描述符⭐ 1. 文件描述符介绍⭐ 2. 提前被分配的文件描述符 0 1 2⭐ 3. 文件描述符的分配规则 &…

浏览器插件利器--allWebPluginV2.0.0.16-beta版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

minio安装小计一则

安装minio并且使用api方式对文件进行操作 本文使用docker安装 docker pull minio/minio docker pull minio/mc (mc为minio文件运行命令行工具) 使用如下命令运行Minio服务器容器: docker run -p 9000:9000 -p 9001:9001 --name minio-…

【深度学习】大模型GLM-4-9B Chat ,微调与部署

下载好东西: 启动容器环境: docker run -it --gpus all --net host --shm-size8g -v /ssd/xiedong/glm-4-9b-xd:/ssd/xiedong/glm-4-9b-xd kevinchina/deeplearning:pytorch2.3.0-cuda12.1-cudnn8-devel-yolov8train bashpip install typer tiktoken numpy1.2…

Web开发:ASP.NET CORE使用Ajax定时获取后端数据

一、低难度(刷新a标签) 1、需求 给a标签每15s刷新一次,显示最新的时间(时间必须由后端获取) 应该如何操作呢 2、代码 后端 using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Mi…

解决mysql5.0,Navicat for MySQL,IntelliJ IDEA之间中文乱码

使用软件版本 jdk-8u171-windows-x64 ideaIU-2021.1.3 mysql-essential-5.0.87-win32 navicat8_mysql_cs 这个问题我调试了好久,网上的方法基本上都试过了,终于是解决了。 三个地方结果都不一样。 方法一 首先大家可以尝试下面这种方法&#xff1a…

记录 cocos 开发问题 ,微信 wx.xxx函数 报找不到名称“wx”

今天写微信排行榜遇到 问题分享一下。 目前,微信、百度 和 抖音 小游戏这些平台为了保护其社交关系链数据,增加了 开放数据域 的概念,这是一个单独的游戏执行环境。开放数据域中的资源、引擎、程序,都和主游戏(主域&a…

(秋招复习)自动驾驶与机器人中的SLAM技术(二)

秋招复习之--自动驾驶与机器人中的SLAM技术2 第五章 基础点云处理激光传感器与点云的数学模型最近邻问题准确率和召回率暴力最近邻栅格和体素方法二分树与K-d树四叉树和八叉树 拟合问题平面拟合直线拟合 第六章 2D激光定位与建图扫描匹配算法点到点的scan matching点到线的scan…

mybatis-plus模板引擎代码生成

网盘代码:链接:https://pan.baidu.com/s/1jwuVGiA97dc1KVnGKc0c4g?pwd6666 提取码:6666 Gradle依赖: dependencies {// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starterimplementation org.…

linux系统设置开机启动的两种方法systemd及rc.local(手工写sh脚本,手工写service服务)

文章目录 知识点实验一、systemd(一)自写一个sh脚本并加入开机启动(二)源码安装的nginx加入开机启动 rc.local 知识点 在Linux系统中,有多种方法可以设置开机启动。以下是其中的一些主要方法: systemd 在较…

基于SSM的网上选课系统

系统背景 在当今信息化高速发展的时代,随着Internet的普及和高等教育规模的不断扩大,传统的手工选课方式已难以满足高校日益增长的管理需求。传统的选课方式不仅效率低下,还容易出现人为错误,导致资源浪费和管理成本上升。因此&am…

2959.力扣每日一题7/17 Java(暴力枚举+Floyd算法)

博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 Floyd算法 解题思路 解题过程 时间复杂度 空间复杂度 Floyd算法 …

Linux系统快速搭建轻量化网站Halo并实现无公网IP远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

AWE2025正式启动,AWE×AI 推动智慧生活的普及

7月18日,2025年中国家电及消费电子博览会(AWE2025)正式启动。主办方宣布,AWE2025的主题为“AI科技、AI生活”,展会将于2025年3月20-23日在上海新国际博览中心举办。 作为全球三大家电和消费电子领域展会之一&#xff…

一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。

一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。 自带了5个多g的美图资源,让网站内容看起来非常大气丰富,可以快速投入运营。 这个代码包,原网站已经稳定运营多年&#xff0…

Linux_生产消费者模型

目录 1、生产消费者模型示意图 2、生产者消费者之间的关系 3、定义交易场所 4、实现生产消费者模型 5、伪唤醒 6、多生产多消费者的实际运用 7、POSIX信号量 7.1 初始化信号量 7.2 销毁信号量 7.3 等待信号量 7.4 发布信号量 8、生产消费的环形队列模型 8.1…

Codeforces Round 942 (Div. 2)

比赛链接:Dashboard - Codeforces Round 942 (Div. 2) - Codeforces A题 翻译中文题面: 一场比赛包含 n 个问题,第 i 个问题的难度预期最多为 bi。已经有 n 个问题的提议,第 i 个问题的难度是 ai。最初,数组 a1,a2,……

安全与便捷并行,打造高效易用的用户支付体验

在当今数字时代,快捷、安全的支付方式已经成为用户日常生活中不可或缺的一部分。不论是在线购物、订阅服务,还是线下消费,用户都期望享受流畅且安全的支付体验。作为开发者,选择适合的支付服务不仅关乎用户体验,更直接…

漏洞预警:Nacos 0day漏洞触发远程代码执行

Nacos即Dynamic Naming and Configuration Service(动态命名与配置服务),是开源的一款服务发现、配置和管理微服务的中间件。 在Nacos中新发现的0day漏洞可以触发远程代码执行,开源网安RASP团队检测并分析出三种类型的攻击&#x…

MySQL学习(13):SQL优化:查看SQL语句性能的方法

1.查看SOL执行频率 MySQL客户端连接成功后,通过如下指令,可以查看当前数据库的insert、update、delete、select的访问频次: show global status like Com_______; #查看全局。后面是7个下划线 使用效果如下: 可以看到各条命令的使用次数。…