前端开发工程师必须关注的几个性能指标

本文围绕页面响应时间的“2 - 5 - 8原则”,介绍前端几个关键性能指标及优化思路。包括开始渲染时间、DOM Ready、首屏时间和onload时间,分别阐述各时间点含义、获取方式,并给出对应优化建议,以提升网站速度和稳定性。

于页面相应时间,有一条著名的“2-5-8原则”。当用户访问一个页面:

在2秒内得到响应时,会感觉系统响应很快;
在2-5秒之间得到响应时,会感觉系统的响应速度还可以;
在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但可以接受;
而超过8秒后仍然无法得到响应时,用户会感觉系统糟透了,进而选择离开这个站点,或者发起第二次请求。

对于一个网站如果希望抓住用户,网站的速度以及稳定性是首当其冲的。从各式各样的前端监控平台中,你都可以获得页面很多的性能指标。本文将介绍几个几个比较关键的指标,并给出相应的优化思路。

开始渲染时间

该时间点表示浏览器开始绘制页面,在此之前页面都是白屏,所以也称为白屏时间。

该时间点可用公式Time To Start Render = TTFB(Time To First Byte) + TTDD(Time To Document Download) + TTHE(Time To Head End)表示。其中TTFB表示浏览器发起请求到服务器返回第一个字节的时间,TTDD表示从服务器加载HTML文档的时间,TTHE表示文档头部解析完成所需要的时间。在高级浏览器中有对应的属性可以获取该时间点。Chrome可通过chrome.loadTimes().firstPaintTime获取,IE9+可以通过performance.timing.msFirstPaint获取,在不支持的浏览器中可以根据上面公式通过获取头部资源加载完的时刻模拟获取近似值。开始渲染时间越快,用户就能更快的看见页面。

对于该时间点的优化有:

1)优化服务器响应时间,服务器端尽早输出
2)减少html文件大小
3)减少头部资源,脚本尽量放在body中

DOM Ready

该时间点表示dom解析已经完成,资源还没有加载完成, 这个时候用户与页面的交互已经可用了。用公式TimeTo Dom Ready = TTSR(Time To Start Render) + TTDC(Time To Dom Created) + TTST(Time To Script)可以表示。TTSR上面已经介绍过了,TTDC表示DOM树创建所耗时间。TTST表示BODY中所有静态脚本加载和执行的时间。在高级浏览器中有DOMContentLoaded事件对应,MDN上有关DOMContentLoaded事件描述的文档如下,

The DOMContentLoaded event is fired when the document has been completely loaded and parsed, without waiting for stylesheets, images, and subframes to finish loading (the load event can be used to detect a fully-loaded page).

详细规范可以查看W3C的HTML5规范。从MDN文档上可以看出该事件主要是指dom文档加载解析完成,看上去很简单,但是DOMContentLoaded事件的触发与css,js息息相关,现在有专门的名词Critical Rendering Path(关键呈现路径)来描述,在文章【关键呈现路径】中详细介绍了关键呈现路径对DOMContentLoaded的影响。

在不支持DOMContentLoaded事件的浏览器中可以通过模拟获取近似值,主要的模拟方法有:

1)低版本webkit内核浏览器可以通过轮询document.readyState来实现
2)ie中可通过setTimeout不断调用documentElement的doScroll方法,直到其可用来实现

具体实现方法可以参考主流框架(jquery等)的实现。 DOM Ready时间点意味着用户与页面可以进行交互了,因此越早越好,对于该时间点的优化有:

1)减少dom结构的复杂度,节点尽可能少,嵌套不要太深
2)优化关键呈现路径

首屏时间

该时间点表示用户看到第一屏页面的时间,这个时间点很重要但是很难获取,一般都只能通过模拟获取一个近似时间。一般模拟方法有:

1)不断获取屏幕截图,当截图不再变化时,可以视为首屏时间。可参考webPagetest的Speed Index算法;
2)一般影响首屏的主要因素是图片的加载,通过页面加载完后判断图片是否在首屏内,找出加载最慢的一张即可视为首屏时间。当然还需考虑其他细节,具体可参考【7天打造前端性能监控系统】

针对该时间点的优化有:

1)页面首屏的显示尽量不要依赖于js代码,js尽量放到domReady后执行或加载
2)首屏外的图片延迟加载
3)首屏结构尽量简单,首屏外的css可延迟加载

onload

该时间点是window.onload事件触发的时间,表示原始文档和所有引用的内容已经加载完成,用户最明显的感觉就是浏览器tab上loading状态结束。

该时间点的优化方式有:

1)减少资源的请求数和文件大小
2)将非初始化脚本放到onLoad之后执行
3)无需同步的脚本异步加载

为了优化整站性能,页面onload的时候可以考虑做一些预加载,把其它页面需要用到的资源预先加载进来。

<think>嗯,用户这次明确聚焦在前端开发领域的技术体系,结合引用内容来看,ta正在规划职业发展路径。从引用[1][2][4]中能提取出几个关键维度:基础三件套深度掌握、框架原理理解、性能优化实践、工程化能力、以及AI时代的前沿趋势。用户可能不只是想要知识清单,更关注如何构建有竞争力的技能树。 注意到引用[4]特别强调2025年的学习方向,说明用户有前瞻意识。需要把技术点分为“当前核心”和“未来重点”两个层次来组织。另外引用[3]提到全栈能力,虽然用户问的是前端,但可以适当关联后端协作的必备知识。 上次回复的计算机自学路径里已经包含前端基础模块,这次要更垂直深入。特别要突出浏览器工作原理这个常被自学者忽视的领域——从引用[1]的“性能优化”和引用[4]的“浏览器底层”能看出其重要性。工具链部分需要强调现代前端工程化标配(如Webpack/Vite),引用[2]提到的JS生态演进也要体现在ES6+特性里。 数学公式方面只需基础排版,重点在知识图谱的可视化呈现。最后的前沿趋势要呼应引用[4]的AI工具链观点,给出具体落地方向如LLM+UI设计。问题设计要引导用户思考技术纵深,比如框架原理与单纯使用的区别。</think>以下是基于行业标准和前沿趋势整理的**前端开发工程师核心技术体系**,结合引用内容进行结构化呈现: --- ### 一、**基础核心三件套**(必须精通)[^1][^2] 1. **HTML5 语义化与API** - 现代语义标签(`<article>`, `<section>`) - Canvas/WebGL图形渲染 - 本地存储(LocalStorage/IndexedDB) - **重点**:无障碍访问(WAI-ARIA)合规性[^4] 2. **CSS 工程化能力** ```mermaid graph LR A[布局系统] --> B(Flex/Grid响应式) A --> C(媒体查询与容器查询) D[样式管理] --> E(CSS变量与预处理器) D --> F(CSS-in-JS方案) G[动效体系] --> H(Transition/Animation) G --> I(性能优化渲染策略) ``` 3. **JavaScript 深度掌握** - 异步编程(Promise/Async Await/Event Loop) - ES6+核心特性(模块化/Proxy/迭代器) - 类型系统(TypeScript核心类型体操)[^4] --- ### 二、**框架与工程化**(生产级开发必备)[^1][^3] | **能力层** | **技术栈** | **高阶要求** | |------------------|-------------------------------------|----------------------------------| | 框架核心 | React/Vue/Angular 任选其一 | 虚拟DOM原理/响应式系统源码解析 | | 状态管理 | Redux/Pinia/Zustand | 状态机设计/原子化状态拆分策略 | | 构建工具 | Webpack/Vite/Rollup | 插件开发/编译优化(Tree Shaking)| | 跨端方案 | React Native/Electron/Tauri | 原生模块桥接/性能调优 | --- ### 三、**性能优化体系**(区分初级与高级的核心)[^1][^4] 1. **网络层优化** - 资源加载策略(HTTP/3, CDN, Prefetch) - 包体积控制:$$BundleSize = \sum_{i=1}^{n} (Module_i - DeadCode) $$ 2. **渲染性能** - 避免重排/重绘(CSS触发层级) - 虚拟列表/时间分片(React Concurrent Mode) 3. **用户体验指标** - 监控LCP(Largest Contentful Paint)/FID(First Input Delay) - 基于Chrome DevTools的运行时诊断 --- ### 四、**全栈协作能力**(提升开发效率关键)[^2][^3] 1. **后端基础** - Node.js中间件开发(Express/Koa) - RESTful/GraphQL API设计规范 2. **数据库交互** - SQL基础查询(联表/索引优化) - ORM框架(Prisma/TypeORM)基础操作 --- ### 五、**前沿技术方向**(2025竞争力重点)[^4] 1. **AI融合开发** - 智能UI生成工具(Copilot/CodeWhisperer) - LLM在低代码平台的应用 2. **新标准演进** - WebAssembly高性能模块 - Web Components标准化组件 3. **三维可视化** - Three.js/WebGPU复杂渲染 - 元宇宙场景交互设计 > **能力验证标准**: > 1. 实现首屏加载≤1s的PWA应用 > 2. 开发被npm官方收录的通用组件库 > 3. 对Chromium内核提交有效Issues[^4] --- **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值