没有历史流量的新业务,最容易把“打开网页速度慢”当成一个笼统结论,然后各自凭感觉解释。可验证的做法是:先承认多个角色看到的是不同事实,再把分歧写成一条能在小范围内被证伪的假设,例如“首屏渲染被某个第三方脚本阻塞,导致移动端访问者更早离开”。假设必须包含对象、条件、预期信号和排除条件,否则它只是一句抱怨。
新业务上线后,常见的情形是运营在手机上打开觉得慢,开发在办公室电脑上测却认为正常。双方都没有撒谎,只是观测条件不同:设备性能、网络环境、页面是否被缓存、访问的是首页还是深层页面,都会改变结果。此时若直接争论“到底慢不慢”,问题会停在立场层面。
更有效的处理是记录分歧发生时的具体条件。例如:同一条链接在移动网络下首次打开,与在已缓存状态下再次打开,耗时可能差出数倍。把“慢”拆成“首次访问”“重复访问”“移动端”“桌面端”四类条件后,分歧往往就变成了可核对的项目。
面对“打开网页速度慢”,新业务通常有两个都说得通的解释。
这两个解释对应完全不同的动作。若把资源阻塞误判为服务端问题,可能去升级配置却毫无改善;若把服务端延迟误判为前端问题,可能反复删减脚本却收效甚微。因此,关键不是先选一个解释,而是找到能区分它们的证据。
能区分上述两个解释的证据,主要看两类时间指标的关系。第一类是首字节时间,即从请求发出到收到服务器第一个字节的间隔;第二类是首次内容渲染时间,即页面开始出现可见内容的时间。二者关系可以给出方向:
需要提醒的是,单次测量不足以定论。缓存状态、并发请求、设备差异都会干扰结果。合理做法是在相同条件下重复几次,观察信号是否稳定。若某次测量中首字节时间突然归零或异常偏低,也要考虑本地缓存或测量方式本身的影响,不能直接当作问题已解决。
假设不是结论,而是一句可以被核对甚至被推翻的话。它至少应包含四个部分:对象、条件、预期信号、排除条件。以“打开网页速度慢”为例,可以写成:
假设:在移动网络首次访问产品列表页时,首屏渲染被一个未延迟加载的第三方脚本阻塞;若暂时移除该脚本,首次内容渲染时间应明显提前,而首字节时间基本不变。
这条假设里,对象是产品列表页,条件是移动网络首次访问,预期信号是渲染时间提前,排除条件是首字节时间不变。若执行后首字节时间也大幅变化,说明原有判断不完整,需要重新审视服务端因素。
假设需要落到一个具体动作上。例如,在测试环境中对一个页面做对照:A 版本保持原样,B 版本把某个脚本改为延迟加载,其余条件尽量一致。执行后比较两者的首字节时间与首次内容渲染时间。
结果会直接影响下一步:
对没有历史流量的新业务来说,这种小范围对照的价值在于:它不依赖流量规模,也不要求先有排名数据,只需要一个页面、一组可比较的条件和一次诚实的记录。假设被证伪同样有价值,因为它排除了一个方向,让下一次动作更接近真正的原因。