每个标签都只要粘贴一行,账单最后由用户付。
一、登录页 3.6 秒与七个标签
周五下午,一位用了两年的老用户发来一句话:你们的登录页是不是坏了,点了没反应。陈默自己试了一遍,从回车到输入框可用,3.6 秒。
他第一反应是服务器慢,但接口日志显示鉴权只要 180 毫秒。打开网络面板才发现,登录页本身很轻,重的是七个第三方标签:分析两个、客服一个、错误上报一个、A/B 一个、支付一个、社交分享一个,合计 640 KB。
以下情境为教学假设,人物、引语和数字不代表经核实的真实案例。
标签数量会骗人,体积不会。 七个标签里最小的只有 30 KB,最大的客服组件 180 KB,一个就占了 28.1%;按「个数」管理,永远找不到真正的那一个。
把 3.6 秒拆开,四段分别是:TTFB 0.6 秒、首方资源 0.7 秒、第三方脚本 1.6 秒、渲染 0.7 秒。第三方一项就接近一半,而它甚至不在这款产品的性能预算表里。
二、640 KB 的分解
按供应商与标签拆开,问题立刻变得具体。七个标签来自五个供应商,其中两个供应商各挂了两个产品。
| 供应商 | 标签 | 体积 | 登录页首屏需要 |
|---|---|---|---|
| 分析平台 | 分析 A | 120 KB | 否,交互后 |
| 分析平台 | 分析 B | 60 KB | 否,从不 |
| 客服平台 | 客服组件 | 180 KB | 否,只在帮助页 |
| 错误上报 | 错误 SDK | 90 KB | 可延迟,但要早 |
| 增长平台 | A/B 测试 | 80 KB | 否,登录页无实验 |
| 支付平台 | 支付 SDK | 80 KB | 否,只在结算页 |
| 增长平台 | 社交分享 | 30 KB | 否 |
| 合计 | 7 个标签 / 5 个供应商 | 640 KB | 1 个 |
体积和「有没有用」是两件事。 客服组件确实有用,但用户登录时不需要它;支付 SDK 也确实必要,但只在结算页必要。它们的问题不是该不该有,而是该在哪个页面加载。
在 p75 慢网 1.6 Mbps 下,640 KB 串行下载需要 3.2 秒(640 × 8 = 5,120 kb,再除以 1,600 kbps)。整页只有 3.6 秒,意味着这七个标签几乎吃掉了全部等待时间;首屏没有更慢,只是因为浏览器用并发连接把它和首方资源重叠了一部分。
单个标签也能超预算。 团队给首屏定的传输预算是 200 KB,客服组件一个就是 180 KB,占 90%。它加载在登录页,等于把预算一次性花光,还什么都没换到。
第三方脚本的成本是三重叠加的。 下载占带宽、解析执行占主线程、失败重试再占一次;其中解析执行最贵,因为它在低端手机上会直接推迟输入框可用时间。
按域名统计比按「第三方」统计有用。 Resource Timing 能给出每个域名的传输体积与耗时;把它们逐个列出来,才会发现「七个标签」里有五个其实属于四条业务线,各自都能被单独论证。
同一个供应商的第二个产品最容易被漏掉。 分析 B 是随分析 A 一起接入的,初始化代码藏在同一个配置里;只删掉页面上的标签而不清理配置,脚本仍会被注入。
三、删 3、延迟 2、按页加载 2
处理七个标签不需要七次决策,只需要对每个标签问三个问题:登录页首屏需要吗?它失败会不会挡住登录?有没有更轻的替代?
第一类,删。 分析 B 与分析 A 的指标重叠约八成,A/B 平台在登录页没有任何运行中的实验,社交分享在登录页从没有人点。三个标签合计 60 + 80 + 30 = 170 KB,直接移除。
第二类,延迟。 分析 A 的 120 KB 改为首次交互后或浏览器空闲时加载;错误上报换成轻量 SDK,从 90 KB 降到 60 KB,并保留错误类型与堆栈,去掉会话回放。两者合计 180 KB,但都不在首屏关键路径上。
第三类,按页加载。 客服组件 180 KB 只在帮助页初始化,支付 SDK 80 KB 只在结算页初始化;登录页不再请求它们。
结果是 4 个标签、登录页 180 KB。 七个减三个删除,剩下四个;其中两个延迟、两个按页,所以登录页首屏的同步第三方标签是 0 个。留下的是分析 A、错误上报、客服与支付,各自在需要的时机出现。
延迟不是消失。 分析 A 的 120 KB 仍会在用户第一次点击后下载并执行,错误上报也仍要初始化;这部分成本从 LCP 转移到了交互延迟,必须用 INP 单独看,不能算作已经解决。
删掉标签要付一点代价。 分析 B 移除后,登录页的跳出率不再有第二份数据交叉验证;陈默接受了这个代价,因为登录页的核心指标是登录成功率,而它由服务端日志完整记录。
新增标签要有准入。 之后每个新标签都要在提交说明里写清体积、加载时机与失败降级方式;没有这三项,不合并。规则只有一行,但它挡住了后面三次「先加上再说」。
顺序很重要:先删,再延迟,最后按页。 先删除可以减少需要延迟的数量,延迟又会减少需要改造的页面;反过来做,会在已经分页的组件上再改一次加载时机。
四、省 460 KB 与 3.6 到 1.5 秒
改完后复测,登录页从 3.6 秒降到 1.5 秒。四段构成的变化如下。
| 构成 | 改前 | 改后 | 变化 |
|---|---|---|---|
| TTFB | 0.6 s | 0.6 s | 0 |
| 首方资源 | 0.7 s | 0.4 s | −0.3 |
| 第三方脚本 | 1.6 s | 0.2 s | −1.4 |
| 渲染 | 0.7 s | 0.3 s | −0.4 |
| 合计 | 3.6 s | 1.5 s | −2.1 |
第三方从 1.6 秒降到 0.2 秒,是因为 180 KB 全部推迟到首屏渲染之后,关键路径上不再有阻塞脚本;残留的 0.2 秒来自预连接、DNS 与延迟队列本身的调度开销。首方资源与渲染的改善,来自连接竞争和主线程占用的减少,属于附带收益,不计入第三方这一项。
在 p75 慢网下,460 KB 的理论下载时间是 2.3 秒,实测省下 2.1 秒,差额来自并发连接与缓存。这提醒一件事:体积换算出来的秒数只能当上限,验收必须用真实网络复测。
复算:
改前第三方 = 120 + 60 + 180 + 90 + 80 + 80 + 30 = 640 KB
删除三项 = 60 + 80 + 30 = 170 KB
保留四项 = 120 + 60 + 180 + 80 = 440 KB
登录页实际加载 = 分析 A 120 + 错误上报 60 = 180 KB
减少体积 = 640 − 180 = 460 KB;460 ÷ 640 = 71.9%
标签数 = 7 − 3 = 4 个;首屏同步标签 = 0 个
慢网理论下载 = 460 × 8 ÷ 1,600 = 2.3 s
实测节省 = 3.6 − 1.5 = 2.1 s;差额 0.2 s
投入 3 h;3 ÷ 40 = 7.5% 的年度性能预算
每小时换回 = 2.1 ÷ 3 = 0.7 s
71.9% 的体积降幅,换来 58.3% 的时间降幅(2.1 ÷ 3.6)。两个比例不相等是正常的:剩余部分里 TTFB 与首方资源不会因为删标签而消失,优化的天花板由它们决定。
登录页值得单独修,因为它是第一印象。 它不在五条关键路径里,却是老用户当天见到的第一个页面;首屏 4.2 秒讲的是首页,登录页 3.6 秒讲的是「能不能进来」,后者更接近流失。
五、行动清单与复算验收
第三方治理一次做完能管半年,但复测要跟着每次新增标签走。以下清单按顺序执行。
- 导出登录页与首页的网络记录,按域名汇总第三方体积。
- 给每个标签标注供应商、体积、加载时机与是否在首屏关键路径。
- 对每个标签问:首屏需要吗、失败了会挡住登录吗、有没有更轻的替代。
- 删除没有实验、没有指标差异、也没有真实入口的标签。
- 把分析类标签改为首次交互后或空闲时加载。
- 把客服、支付这类页面级标签移到对应页面,按需初始化。
- 错误上报换轻量 SDK,确认采样后仍能还原一次真实报错。
- 用 p75 慢网复测,记录标签数、体积与可交互时间三项。
验收标准:登录页首屏同步第三方标签为 0、总体积不超过 200 KB,且被删掉的标签没有让任何一项已有决策失去数据来源。
使用边界与实操验收
本文只讨论浏览器端第三方标签的数量、体积与加载时机,不讨论供应商选型、合同价格与数据合规。
服务端埋点不归本文。 事件管道、采样率与保留期属于可观测性与指标专题;本文只处理浏览器里那几行脚本。
同意管理会改变顺序。 如果合规要求同意前不得加载分析脚本,实际顺序会与本文不同;先满足同意,再谈延迟。
延迟加载不是免费。 它把成本从首屏移到交互后,长任务仍会拖慢输入响应;改完必须看 INP,而不是只看 LCP。
第三方故障要有降级。 脚本超时或 404 时页面必须继续可用;本文不展开熔断细节,但验收时要断网模拟一次。
体积数字会随版本变化。 本文的 640 与 180 是教学假设,供应商每次发版都可能变;结论要自己测,不能抄。
不要为了分数删支付风控。 如果一个标签承担欺诈拦截或合规义务,它的位置可以调,但不能因为体积大就删。
复测要看一周的 p75,不看一次本机测试。 本机常常是快网加空缓存,和用户的 1.6 Mbps 相差一个数量级;样本不足时,宁可先看中位数与慢网分位。
关键参考与核验范围
- MDN Web Performance :用于核对首屏指标与资源加载的一般口径。
- MDN Resource Timing API :用于按域名汇总第三方资源的体积与耗时。
- MDN PerformanceObserver :用于在真实设备上采集长任务与交互延迟。
- HTTP Archive 2024 Performance :用于核对第三方脚本在页面重量中的普遍占比。
以上链接于 2026-10-26 实测可公开访问;未核验版本、功能范围与政策更新。核验日期:2026-10-26。
范围上只讨论登录页与首屏的第三方标签治理,不讨论服务端埋点管道、供应商商务条款与同意管理实现。
系列导航
- 上一篇:后台任务:34 秒的同步导出与三次重复文件
- 下一篇:云账单:210 美元的去处与每千次请求 0.42
- 回到目录:一个人的性能与账单:4.2 秒的首屏、一千二百次查询与每月 210 美元
- 相关阅读:依赖管理:四十一个直接依赖与四个升级窗口
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。