惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
大猫的无限游戏
大猫的无限游戏
S
Securelist
The Hacker News
The Hacker News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs
Jina AI
Jina AI
K
Kaspersky official blog
T
Threat Research - Cisco Blogs
Stack Overflow Blog
Stack Overflow Blog
Webroot Blog
Webroot Blog
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
量子位
S
Schneier on Security
Latest news
Latest news
D
Darknet – Hacking Tools, Hacker News & Cyber Security
O
OpenAI News
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
博客园 - 叶小钗
L
LINUX DO - 最新话题
V
Visual Studio Blog
U
Unit 42
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
Security Affairs
AWS News Blog
AWS News Blog
S
Secure Thoughts
腾讯CDC
Cloudbric
Cloudbric
H
Help Net Security
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
C
Cyber Attacks, Cyber Crime and Cyber Security
WordPress大学
WordPress大学
The Last Watchdog
The Last Watchdog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 【当耐特】
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
D
DataBreaches.Net
A
About on SuperTechFans
G
GRAHAM CLULEY
Forbes - Security
Forbes - Security
Hugging Face - Blog
Hugging Face - Blog
Martin Fowler
Martin Fowler
Vercel News
Vercel News
Cisco Talos Blog
Cisco Talos Blog
NISL@THU
NISL@THU
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Know Your Adversary
Know Your Adversary

webfem

react-virtualized AutoSizer 实现原理详解 - webfem JWT技术详解:从入门到精通 - webfem 如何在电脑上调试手机网页 - webfem react-virtualized 的用法详解 - webfem MongoDB 入门详解 - webfem react-virtualized 无限列表图片闪屏问题修复 - webfem 博客搭建-创建文章接口 - webfem 代码相似性检查机制 - webfem WebSocket 技术详解:实时通信的利器 - webfem 小米YU7购车记-新能源购置税计算器的诞生 - webfem 手动搭建个人博客 - webfem 博客搭建-项目工程搭建 - webfem Base64编码详解:原理、应用与实践 - webfem 字数统计算法深度解析:从Unicode到实际应用的硬核技术实现 - webfem 衬线体与无衬线体:字体设计的经典对决 - webfem 如何把 小程序 转换为 VUE - webfem MD5算法原理及其实现 - webfem 性能优化-核心指标-SI 的介绍与优化 - webfem 如何设计一个后端管理平台 - webfem
性能优化-核心指标-FP - webfem
yimin,2316114920@qq.com · 2025-09-09 · via webfem

什么是 FP

首次绘制 (FP) 衡量从用户首次导航到网页到浏览器首次将任何像素渲染到屏幕上的时间。这是用户感知页面加载的第一个视觉信号,标志着页面从完全空白状态开始有了第一次视觉变化。FP 也叫白屏。

在此加载时间轴中,FP 发生在第一帧,因为这是浏览器首次在屏幕上绘制任何像素的时间。

在上图中所示的加载时间轴中,FP 发生在第一帧,这是浏览器开始渲染页面的关键时刻。需要注意的是,FP 可能只是渲染了背景色、边框或其他非内容元素。

您会发现,FP 通常早于 FCP(首次内容绘制),这是一个重要的区别。FP 关注的是_任何_视觉变化,而 FCP 则专注于有意义内容的首次渲染。

FP 得分多少算好

为了提供良好的用户体验,网站应尽量将首次绘制时间控制在 1.0 秒或更短的时间。为确保大多数用户都能达到此目标值,一个合适的衡量阈值是网页加载时间的第 75 个百分位数,并按移动设备和桌面设备进行细分。

更详细的数据可以参考 lighthouse 性能分计算

如何获取 FP

在 js 中,可以通过 PerformanceObserver 对象来获取 FP 的具体数据

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

PerformanceObserver 是用于监测性能条目的 API,可以观察特定类型的性能指标(如绘制时间、资源加载等)

代码验证如下:

fp-console-result.png

通过测试 本网站的 FP 数值是 298 ms,在 1.0s 以内,属于性能优秀的表现。这也印证了我们在 Lighthouse 性能分计算过程详解 过程中获得高分的原因。

如何优化 FP

FP 是用户首次输入网址 -> 浏览器首次在屏幕上绘制任何像素的时间。因此,我们要确保浏览器能够尽快开始渲染过程,消除渲染阻塞是关键。

🌐 优化网络连接

网络优化是web性能的基础,我们已经总结在 前端性能优化-网络篇 感兴趣的直接查阅即可。

这里给到优化思维导图:

网络优化

🚀 消除渲染阻塞资源

  • 优化关键渲染路径:识别并优先加载关键 CSS,延迟非关键资源

  • 内联关键 CSS:将首屏渲染必需的 CSS 直接内联到 HTML 中,避免额外的网络请求

  • 异步加载 JavaScript:使用 asyncdefer 属性,防止 JS 阻塞 HTML 解析和渲染

  • 移除未使用的代码:通过代码分割和 Tree Shaking 减少资源体积

⚡ HTML 解析优化

  • 简化 HTML 结构:减少 DOM 深度和复杂性,加快解析速度

  • 预连接关键域名:使用 <link rel="preconnect"> 提前建立连接

  • DNS 预解析:使用 <link rel="dns-prefetch"> 提前解析域名

🎨 CSS 渲染优化

  • 避免复杂选择器:简化 CSS 选择器,减少样式计算时间

  • 减少重排重绘:避免频繁修改影响布局的 CSS 属性

  • 使用 CSS 包含:通过 contain 属性限制样式计算范围

  • 优化字体加载:使用 font-display: swap 避免字体阻塞渲染

🖥️ 服务器端优化

  • 启用 HTTP/2:利用多路复用提高资源加载效率

  • 开启 Gzip/Brotli 压缩:减少传输数据量

  • 使用 CDN:就近分发静态资源,减少网络延迟

  • 服务器推送:主动推送关键资源到客户端

原文地址:https://webfem.com/post/performance-fp,转载请注明出处