制定阶段性交付物,核心是把“网页打开慢”拆成可测量、可验收的中间状态,而不是等到全部优化完才判断效果。适用前提是:你已有一个可复现的慢页面,能记录加载耗时,并且有权改动前端资源、服务端响应或第三方脚本中的至少一部分。下一步先确定基线,再按“定位—削减—稳定”三段交付,每段都给出可检查的信号。
这一阶段不追求变快,只要求把慢的来源说清楚。交付物是一份带时间戳和环境的记录,至少包含:页面地址、测试网络条件、设备类型、首次加载与重复加载的耗时差异、以及每个阶段的耗时分布。判断结果的方式是:同一页面在同一条件下连续测三次,如果耗时波动超过三成,说明测量本身不稳定,应先固定环境再继续。
可执行步骤:
DOMContentLoaded 与 load 两个时间点,以及耗时最长的三个请求。验收信号:你能指出“首屏被哪个资源卡住”,而不是笼统地说“服务器慢”或“图片太大”。如果无法指出具体资源,这一阶段不算完成。
首屏指用户不滚动就能看到的内容。这一阶段的交付物是:首屏所需资源被优先加载,非首屏资源被推迟或懒加载。适用条件是页面结构允许调整资源顺序,且不依赖某个脚本执行后才能显示主要内容。
具体做法与检查项:
<head> 中,其余样式异步加载。loading="lazy"。defer 或 async,但要注意依赖顺序。判断结果:在相同网络条件下,首屏内容出现的时间应短于基线,且页面没有明显跳动。若首屏变快但整体加载更慢,说明只是把成本转移到了后面,需要继续看第三阶段。
这一阶段的目标不是某一次测得快,而是多次访问都稳定。交付物是一份回归记录:优化前后各测若干次,记录中位数而非单次最好成绩。适用条件是页面内容相对固定;如果页面每次请求都不同,应改为记录同一类页面的平均值。
检查项包括:
判断结果:连续多次测试中,加载耗时不再出现大幅反弹,且首屏内容稳定出现。此时可以把该页面的优化方式整理成可复用清单,用于同类页面。
三个阶段存在依赖:没有第一阶段的定位,第二阶段的改动可能只是猜测;没有第二阶段的验证,第三阶段无法判断稳定性来自优化还是网络波动。常见误判是把“某次测试变快”当成问题解决,或者把服务端、前端、第三方脚本的原因混在一起。一项现象可能有多个解释,例如首屏慢既可能是图片过大,也可能是脚本阻塞渲染,还可能是接口返回慢;应先分别验证,再下结论。
如果资源有限,优先完成第一阶段和第二阶段中的首屏图片与脚本处理,因为它们通常不需要改动后端。若首屏内容依赖接口返回,则应把接口响应时间纳入第一阶段的记录,而不是只盯着前端文件大小。
下一步:选一个具体慢页面,按第一阶段清单记录一次基线,再决定先削减哪一类资源。