我们已经知道性能的重要性,但当我们讨论性能的时候,让一个网页变得跟快,具体是指哪些?
事实上性能是相对的:
- 一个网站可能一个用户感觉很快,但对其他用户感觉很慢
- 两个网站的loading结束时间是一样的,但其中一个你感觉比另一个要快
- 一个网站加载的很快,但页面长时间不可交互
所以在讨论性能的时候,精确的、可量化的指标很重要。
虽然说某一个指标可能是客观的,可量化的,但对我们实际去评价性能可能没什么帮助。
定义指标
以往,开发者都通过 load
事件来衡量性能。load
是页面生命周期中的明确的时刻,但这个时刻用户并不关心。
举个例子,服务器可能很快的就返回了一个很小的页面,但在 load
事件之后推迟了若干秒来获取内容并展示。虽然这种页面 load
很快,但实际上用户看到内容则是在之后的若干秒,load
的时间跟用户实际感知的不一样。
为了确保指标与用户相关,Chrome团队围绕一系列问题定制了框架:
- 是否发生了: 跳转是否成功?服务器是否有响应?
- 是否有用: 是否渲染了足够的内容供用户查看?
- 是否可用: 用户是否可交互?或者页面卡住?
- 是否用的爽: 交互是否顺畅?自然?无延后?无卡顿?