前端埋点与数据上报深度解析:你的每一行埋点代码都在花谁的钱?
前端埋点是把用户行为变成可分析数据的工程实践,核心挑战是在采集全面性与零性能侵入之间找平衡,每一 KB 上报都在花流量与服务器账单。 面试常考三种上报方式(img、fetch、sendBeacon)的选型、采样策略与隐私合规红线。
前端埋点是把用户行为变成可分析数据的工程实践,核心挑战是在采集全面性与零性能侵入之间找平衡,每一 KB 上报都在花流量与服务器账单。 面试常考三种上报方式(img、fetch、sendBeacon)的选型、采样策略与隐私合规红线。
长任务是主线程连续执行超过 50ms 的任务块,直接导致卡顿与 INP 恶化,通过 PerformanceObserver 捕获、时间切片拆分、Web Worker 卸载计算来治理。 面试常考 Long Tasks API 的捕获、时间切片与 Web Worker 的边界,以及如何把页面冻住从玄学变成可控工程。
同时发起大量请求会卡死浏览器、打爆服务端,并发控制用队列加最大并发数加 Promise 包装精确限制同时运行的任务数。 面试手写并发池并讲清重试与自适应节流策略。
分片上传把大文件切小块分别上传,配合文件指纹(MD5、SHA256)实现秒传与断点续传,配合并发池控制速度,让上传到 90% 断了重来成为历史。 面试常考切片算法、指纹计算时机、并发控制与断点续传的服务端分片合并逻辑。
虚拟列表只渲染视口内可见的几十个 DOM 节点,让十万条数据也能秒开,核心是动态算 startIndex、endIndex 并用 padding 占满滚动高度。 面试常考定高版本原理、不定高 item 的预估加修正策略,以及滚动监听与缓冲区的实现。
运行时性能核心是永远别把主线程占满 50ms 以上,通过拆分长任务、利用空闲时间、保证每 16ms 渲染一帧让 JS 执行对交互零感知。 面试常考 requestIdleCallback、requestAnimationFrame 与时间切片,以及一帧 16.67ms 预算的拆解。
没监控就没优化:性能监控用 Performance API 与 PerformanceObserver 采集 LCP、INP、CLS 等 Web Vitals,通过 RUM 替代实验室数据。 让你知道真实用户在低端机上等了几秒,面试常考 PerformanceTimeline、PerformanceObserver 与实验室、现场数据的区别。
图片占页面总流量 60-80%,一张优化过的 Hero 图能从 2.5MB 降到 35KB 而肉眼难辨,是投入产出比最高的性能方向。 面试常考格式选型决策树(WebP、AVIF)、懒加载、响应式图片 srcset、sizes 与 CDN 压缩策略。
构建优化核心不是让打包器跑更快,而是让产物更小加载更快:Tree Shaking 删没用的代码,Code Splitting 按需加载代码。 两者配合能把首屏 JS 从 500KB 降到 100KB 内,面试常考 Tree Shaking 的前提(ESM 加无副作用)与动态 import 分包。
首屏优化核心不是加载更少,而是把对的资源在对的时间加载,关键指标 LCP 衡量用户看到核心内容的速度,影响搜索排名。 面试常考 TTFB、FCP、LCP 链路、预加载/预连接、关键渲染路径优化与骨架屏等实战手段。