前端如何进行网站性能分析及优化性能

简介: 前端如何进行网站性能分析及优化性能

1.分析网站性能常用的方式


1.1 chrome dev Tools

我们经常使用 Chrome Dev Tools 来开发调试,还可以利用它来分析页面性能

开源的自动化工具,可以安装为 Chrome 的扩展插件,也可以命令行直接运行, 它将针对目标页面运行一连串的测试,然后输出一个有关页面性能的评分报告。

优点:

1. 评分报告全面且具有一定的权威性

2. 提供解决方案

3. 发现大的性能问题

缺点:

1. 测试环境较单一,用户群体的环境各有不同,不可以一概之

2. 存在「波动」,不同时刻的访客群体存在差异,数据只能反应当前时刻的「效果」

1.2 第三方收费方案

NewRelic

阿里云ARMS

特点:

自研性能监控系统:在目标页面注入脚本,在约定的时机收集性能指标数据,统一上报数据中心, 数据中心集中整合生成报表,再根据报表分析性能。

优点:

1.数据全面,可采集到所有用户各个环境下的性能,生成直观的分布图

2.数据真实,来源于真实用户

3.反馈及时,优化后效果可及时地在报表上反馈出来

缺点:

依赖较多,数据中心和脚本都需要自主开发,相对成本较高 所谓监控,实际上就是性能「真实跟踪」,虽然依赖较多,但对性能指标的反馈最为真实有效。

2.介绍一个常用的性能分析工具


LightHouse

2.1 特点:

Lighthouse 是一个开源的自动化工具,用于改进网络应用的质量。只要为 Lighthouse 提供一个需要审 查的网址,它将针对此页面运行一连串的测试,然后生成一个有关页面性能的报告。 并网站进行分析,将分析结果以可视化的方式展示给开发者,甚至还指出了可以优化的地方。

2.2 使用方式

Chrome 开发者工具(DevTools)

Chrome 扩展

Node CLI 推荐:https://github.com/GoogleChrome/lighthouse#using-the-node-cli

Node Module

2.3 代码示例

//安装
npm install -g lighthouse
//生成报告 并在浏览器中打开
lighthouse http://kaikeba.com --view
//报告格式是json,保存在当前目录
lighthouse http://kaikeba.com --output=json --output-path=./report.json
//设置浏览器的窗口尺寸
//lighthouse http://kaikeba.com --chrome-flags="--window-size=1190,660"
//模拟器设为桌面
//lighthouse http://kaikeba.com --emulated-form-factor=desktop

2.4 性能报告

Perfermance 性能分析

Accessibility 可访问性

Best Practices 最佳实践

SEO 搜索引擎优化

Progressive Web App 是否集成pwa

3.准确衡量网站的性能


主要看一下几个方面:

1. 是否发生? 导航是否成功启动?服务器是否有响应?

2. 是否有用? 是否已渲染可以与用户互动的足够内容?

3. 是否可用? 用户可以与页面交互,还是页面仍在忙于加载?

4. 是否令人愉快? 交互是否顺畅而自然,没有滞后和卡顿

3.1 是否发生

当用户访问一个网站的时候,关心的第一个问题永远是“是否发生”——浏览器是否成功地把我的请求发 送出去,而服务器是否已经知道并开始处理我的请求。

TTFB (Time to First Byte) 首字节到达的时间点。

FP (First Paint) 首次绘制,标记浏览器渲染任何在视觉上不同于导航前屏幕内容的时间点。

FCP

First Contentful Paint

首次内容绘制,标记浏览器渲染来自 DOM 第一位内容的时间点,内容可能是文本、图像等元素。 测试加载速度的体验,页面最主要的内容何时呈现。

3.2 是否有用  

当用户确定自己的请求发生了后,就会开始关心第二个问题:“是否有用?” 例如,用户在使用天气应用,在确定页面有反应了后,就开始关心,什么时候能展现有用的内容,从而 得知今天的天气。

LCP

Largest Contentful Paint

最大内容绘制时间

计算从页面开始加载到用户与页面发生交互(点击,滚动)这段时间内,最大元素 绘制的时间,该时间会随着页面渲染变化而变化,因为页面中的最大元素在渲染过程中可能会发生改 变。

SI

Speed Index

速度指标,填充页面内容的速度,取开始加载到最后完成渲染,每一时刻页面未完成度的积分

3.3 是否可用

在用户得到了有用的信息后,用户就会基于得到的信息作出反应,这就是页面“是否可用?

例如看到了 新闻后,想要评论。TTI、FID、TBT 就是回答这些问题的指标。

TTI

Time to Interactive

可交互时间,用于标记页面已进行视觉渲染并能可靠响应用户输入的时间点。页面可能会因为多种原因 而无法响应用户输入,例如页面组件运行所需的 Javascript 尚未加载,或者耗时较长的任务阻塞主线 程。TTI 指标可识别页面初始 JavaScript 已加载且主线程处于空闲状态(没有耗时较长的任务的时间点。

TBT

Total Blocking Time

总共阻塞时间,计算的是从 FCP 到 TTI 之间,主线程阻塞的总时间。阻塞时间是指单次任务占用主线程 超过 50 ms 的部分。

FID (First Input Delay)

首次输入延迟,指用户首次输入到页面响应的时间。我们都知道第一印象的重要性,网站亦是如此。首 次输入延迟会成为用户对网站很重要的第一印象,决定用户有可能成为忠实用户或者弃之而去。值得注 意的是,FID 仅关注用户离散的操作,如点击,轻击,按键等,其他交互如滚动和缩放,并不是 FID 关 注的,因为通常浏览器会用一个单独的线程来处理它们。

3.4 是否令人愉快

使用是否流畅,有没有发生预料外的视觉偏移。

CLS

Cumulative Layout Shift

累计布局偏移。测量在页面的整个生命周期中发生的每个意外的样式移动所造成的布局偏移分数的总 和。 测试视觉稳定性上的体验,有多少内容发生了意外的偏移。

相关文章
|
2月前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
2月前
|
缓存 前端开发 JavaScript
前端框架的数据驱动方式对性能有哪些影响?
前端框架的数据驱动方式对性能有哪些影响?
|
15天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
49 3
|
2月前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
1月前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
2月前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
50 2
|
2月前
|
前端开发 JavaScript 搜索推荐
前端懒加载:提升页面性能的关键技术
前端懒加载是一种优化网页加载速度的技术,通过延迟加载非首屏内容,减少初始加载时间,提高用户访问体验和页面性能。
|
2月前
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
3月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
205 2
|
3月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
58 0