动态页面做页面加载速度测试时,不能只看网络请求结束或 load 事件触发,因为此时首屏可见内容可能还没渲染出来。要确认可见内容,应把“浏览器已经画出用户能看到的元素”作为观测点,用首屏关键元素出现时间、最大内容绘制时间和布局稳定性来交叉判断。对第一次接触这个问题的人来说,起点是选一个能记录渲染过程的工具,下一步是固定测试条件后对比多次结果。
动态页面通常由 JavaScript 拉取数据后再插入 DOM。请求返回 200 并不等于内容可见,接口完成也不等于用户已经看到文字或图片。判断可见内容时,可以盯住三类信号:
display:none、visibility:hidden 隐藏。如果页面用骨架屏过渡,骨架本身算可见内容,但它不是用户要读的最终内容。测试时应把“最终内容出现”与“骨架出现”分开记录,否则会把加载速度算快。
动态页面的结果受网络、设备、登录状态和接口缓存影响很大。开始前先固定以下条件,否则多次测试没有可比性:
这一步最关键的是元素清单。没有清单,后面只能看到一堆时间数字,无法判断“可见内容到底出来没有”。
在浏览器开发者工具的 Performance 面板录制加载过程,可以看到主线程任务、绘制帧和网络请求的时间线。重点观察首屏元素第一次被绘制的时刻,而不是最后一个请求结束的时刻。常用指标包括:
如果页面依赖接口返回后才渲染,可以在代码中给关键元素加一个标记,例如在数据插入后记录一次时间戳,再与绘制时间对照。这样能区分“数据已到但没画出来”和“数据还没到”两种不同原因。
单次结果不足以确认可见内容。建议在同一条件下至少重复三次,观察首屏元素出现时间和最大内容绘制时间是否稳定。若波动很大,优先检查以下可能原因:
验证时不要只凭一次“看起来很快”就下结论。把每次的首屏元素清单逐项打勾,确认最终内容而非骨架已经出现,才算通过。
动态页面会随版本迭代改变渲染逻辑,今天可见的内容明天可能被新脚本延后。维护阶段可以做两件事:一是把首屏元素清单和测试条件写成固定检查项,每次发版后跑一遍;二是保留多次测试的记录,对比首屏内容出现时间是否明显变差。若发现变差,先定位是网络、脚本还是接口变化,再决定优化方向。需要进一步行动时,从当前页面挑出一个首屏关键元素,按上面的准备条件录制一次加载过程,确认它第一次可见的时间点,再决定是否调整脚本加载顺序或接口调用时机。