网站首屏优化 | 提升首屏的几个简单手段

前言

在用户反馈中,诸如「白屏」、「加载慢」、「打不开」等关键词频繁出现,这些词汇直观地揭示了应用程序在实际操作中遭遇的技术挑战。

根据 Statista 的报告,应用加载速度的延迟超过 3 秒,用户流失率可增加 53% 。此外,Google 的研究表明,首屏加载时间的优化可以提升页面的参与度高达 100% 。尽管首屏加载速度问题可能受到多种主观因素的影响,使得问题难以准确复现,但缺乏详尽的用户体验数据无疑会增加研发团队在洞察用户实际体验上的难度。

Forrester Research 的数据显示,当遇到应用性能问题时,高达 70% 的用户选择沉默或忍耐,而不是提出投诉。这表明,许多用户可能在不声不响中放弃了使用,转而尝试竞争对手的产品。因此,首屏加载问题若不及时解决,不仅会损害用户体验,还可能导致高达 20% 的用户流失,这一数据来源于 Akamai 的 2019 年用户行为研究报告。

综上所述,收集和分析用户体验数据对于及时发现并解决首屏加载问题具有至关重要的作用。通过实施有效的数据跟踪和分析策略,研发团队可以更准确地定位问题,从而提升应用性能,增强用户满意度,并最终减少用户流失率。

下面将和您分享几个有关提升首屏性能的手段。

为什么需要提升 LCP ?

  • 用户设备太多了(从用户设备入手)

一般网站受众包含各种屏幕设备,以观测云 saas 版本为例,上百种设备登录:

  • 用户屏幕尺寸不太一样(同上但更多考虑屏幕尺寸)

不同的设备,可能屏幕尺寸等一不一样,以观测云为例,有以下这些屏幕尺寸:

  • LCP 元素不太一样(同上但更多考虑 LCP 元素)

屏幕尺寸不一样,在不同的设备上,可能被认为最大可见元素也不一样。

查看上图,基本能看出来 LCP 元素并非总是页面中的最大的图片。

如何获取用户的屏幕尺寸和 LCP 元素

屏幕尺寸

获取屏幕尺寸的代码相对简单:

window.screen

代码返回对象包括屏幕尺寸信息:

LCP 元素

有关 LCP 的相关数据,实现代码如下:

new PerformanceObserver((entryList) => {for (const entry of entryList.getEntries()) {console.log('LCP candidate:', entry.startTime, entry);}
}).observe({type: 'largest-contentful-paint', buffered: true});

执行的结果是,如果检测到 LCP ,会打印 LCP 相关信息,见下图:

这里我们能看到 LCP 的很多信息,其中:

  • element是 LCP 的 node ,如果是 image 类型,也就能看到这个 image 的 url 。
  • startTime
  • renderTime: 渲染时间

获取 LCP 元素后如何提升?

提前加载 LCP 资源

有关提前加载 LCP 资源,上面我们看到了 LCP 元素是图片,可以如下操作:

优先加载关键资源

有关优先加载关键资源,我们可以如下操作:

延迟加载资源

有关延迟加载资源,我们需要知道哪些资源阻塞了页面渲染:

上图中,我们能看到 js css 等阻塞了页面渲染。我们按资源类型,查看一下占比:

目前来看主要是 js 和 css 阻塞了页面渲染。如果按照资源名称排序,我们也能找到哪些资源影响用户最多:

如上图所示,需要对 top10 的阻塞页面渲染的资源进行优化。

缓存

除了正常加载,我们也能做一些缓存的内容,为了得到更好的缓存,我们可以使用:

  • cdn
  • 减少 304

304 资源没有充分利用本地缓存文件,经过去服务器对比发现资源没有更新。 如下图 16.8% 的资源,不仅浪费了带宽,最重要的是对用户体验有一定影响。

针对这些内容,我们可以列出资源清单,进行优化。

传输

除了缓存,还可以从传输入手。说到传输,都会说做压缩,但实际压缩效果是什么情况呢?这里需要知道:

  • resource_size: 资源大小
  • resource_encode_size: 传输大小,如下图所示,就列出了具体资源的大小和传输大小

这样,我们就能看到如实际不同域名所压缩的情况:

根据实际数据,也可以做对应的措施,也可以从资源类型来看:

减少请求数量

通过请求数量和页面加载时间的情况,已知可能存在线性关系:

查找相关性最强的因素

对于性能影响的因素很多,比如 js_size , css_size , dns_time , tcp_time 等,哪个因素才是最关键的因素呢。 我们可以利用统计学的方式,从真实数据中来看,做相关性分析,根据找到的因素或者页面进行优化:

结语

网站首屏优化的手段很多,本文只随机列出几点,对于优化的效果,需要依照当前几点来看目前的状态,很多时候,我们需要逐步做优化。以首页来说,可能首次加载相对跳转回来,两次加载一平均,往往看起来数据还算可以,但更多的时候,可能首次加载 4s 占 70% ,1s 的占 30% ,即便采用百分位也不一定很好的暴露出问题,针对性能优化,需要考虑从多个不同的角度来探查。

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

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

相关文章

Linux :环境基础开发工具

目录: 1. Linux 软件包管理器 yum 1. 什么是软件包 2. 查看软件包 3. 如何安装软件 4. 如何卸载软件 2. Linux开发工具 1. Linux编辑器-vim的基本概念 2. vim使用 3. vim的基本操作 4. vim正常模式命令集 5. vim末行模式命令集 6. 简单vim配置 3. Linux编译器-gcc/…

【Java程序设计】【C00379】基于(JavaWeb)Springboot的旅游服务平台(有论文)

【C00379】基于(JavaWeb)Springboot的旅游服务平台(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发&#xff0c…

深度学习知识【CSPNet网络详解】

CSPNet的贡献 1.增强了CNN的学习能力,能够在轻量化的同时保持准确性。 2.降低计算瓶颈。 3.降低内存成本。 CSPNet介绍 在神经网络推理过程中计算量过高的问题是由于网络优化中的梯度信息重复导致的。CSPNet通过将梯度的变化从头到尾地集成到特征图中&#xff0c…

大型网络游戏设计与AI赋能-4

接上文---- 第一个要去搭建的就是这个运行平台层。在此之上,我们会引入一些第三方SDK包。 为什么要引入第三方的SDK包?大家要知道一点,任何研发一款软件从来都不会从头造轮子。就是我们在开发一款软件的时候,从来都不会从头造轮子…

Python中lambda函数使用方法

在Python中,lambda 关键字用于创建匿名函数(无名函数),这些函数的特点是简洁、一次性使用,并且通常用于只需要一行表达式的简单场景。下面是lambda函数的基本结构和使用方法: 基本语法: lambd…

腾讯云2核2G服务器CVM S5和轻量应用服务器优惠价格

腾讯云2核2G服务器多少钱一年?轻量服务器61元一年,CVM 2核2G S5服务器313.2元15个月,腾讯云2核2G服务器优惠活动 txyfwq.com/go/txy 链接打开如下图: 腾讯云2核2G服务器价格 轻量61元一年:轻量2核2G3M、3M带宽、200GB月…

二叉树|235.二叉搜索树的最近公共祖先

力扣题目链接 class Solution { private:TreeNode* traversal(TreeNode* cur, TreeNode* p, TreeNode* q) {if (cur NULL) return cur;// 中if (cur->val > p->val && cur->val > q->val) { // 左TreeNode* left traversal(cur->left, p, q)…

基于springboot+vue的乌鲁木齐南山冰雪旅游服务网

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:spring…

树状数组原理和代码

树状数组 求下标的对应 求i管着的下标的范围 方法:拆掉最右侧的1然后1 到你自己 query sum 1-i的和 拆掉最右侧的1 再把下一个数值吸收到sum 重复这个过程直到全变0为止 add 方法:加上最右侧的1 到上限为止 lowbit方法 单点增加范围查询模板 #inc…

Java八股文(SpringCloud Alibaba)

Java八股文のSpringCloud Alibaba SpringCloud Alibaba SpringCloud Alibaba Spring Cloud Alibaba与Spring Cloud有什么区别? Spring Cloud Alibaba是Spring Cloud的衍生版本,它是由Alibaba开发和维护的,相比于Spring Cloud,它在…

【PLC】PROFIBUS(二):总线协议DP、PA、FMS

1、总线访问协议 (FDL) 1.1、多主通信 多个主设备间,使用逻辑令牌环依次向从设备发送命令。 特征: 主站间使用逻辑令牌环、主从站间使用主从协议主站在一个限定时间内 (Token Hold Time) 对总线有控制权从站只是响应一个主站的请求它们对总线没有控制…

【Java程序设计】【C00383】基于(JavaWeb)Springboot的水产养殖系统(有论文)

【C00383】基于(JavaWeb)Springboot的水产养殖系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发&#xff0c…

【包邮送书】一本书掌握数字化运维方法,构建数字化运维体系

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

11.数据库技术(下)

1.select语句 中括号表示可有可无; 尖括号表示变量名; 分组后再筛选,用having;分组前筛选,用where; select后跟随的所有列,除聚集函数外,都需要列在group by后; 注&…

IDEA : 已经有一个永久破解版的IDEA2019版本,现在又想安装最新版本的,俩版本共存,发现新版本打不开的解决方案

在新文件的目录下,注释掉一行19版本的地址 地址:C:\Users\23999\AppData\Roaming\JetBrains\IntelliJIdea2023.2 (不同电脑Users后边的一个地址的注释会不一样) 然后找到该目录下的indea64.exe.vmoptions 用 记事本 打开 在-javaagent 那一栏里会自动给…

【业界动态】Digital Twin-数字孪生

绝大多数的人对数字孪生是一个模糊的概念,数字孪生也被称为数字映射、数字镜像,他既是一种技术,也是一种生态。随着互联网的建设与发展,数字孪生在未来又会如何发展,虚拟与现实之间会产生怎样的星火? 上帝按…

算法(6)KMP+trie

KMP: 最浅显易懂的 KMP 算法讲解_哔哩哔哩_bilibili 该视频使用python书写代码,不会python的小伙伴也可以看看了解kmp的大致思路。 问题描述: kmp:字符串匹配算法,用来找一个长字符串中出现了几次小字符串&#xf…

AIGC——ComfyUI SDXL多种风格预设提示词插件安装与使用

概述 SDXL Prompt Styler可以预先给SDXL模型提供了各种预设风格的提示词插件,相当于预先设定好了多种不同风格的词语。使用这个插件,只需从中选取所需的风格,它会自动将选定的风格词汇添加到我们的提示中。 安装 插件地址:http…

scrapy爬虫框架

scrapy爬虫框架 一、scrapy的概念作用和工作流程1、scrapy的概念2、scrapy框架的作用3、scrapy的工作流程(重点)3.1 回顾之前的爬虫流程3.2 改写上述流程3.3 scrapy的流程3.4 scrapy的三个内置对象3.5 scrapy中每个模块的具体作用 二、scrapy的入门使用1…

注册、配置中心-微服务小白入门(2)

Nacos 已经下载安装并且使用了,那么看如何使用: Nacos 注册及配置,以下是一个服务启动后注册到nacos,同时,把该服务的相关配置,写到nacos之中 1、nacos设置 命名空间中,添加对应的服务命名空间…