在 About Performance 的最后提供了一些关注的点,但感受比较零散,有没有理论体系化的思想做为依据,经过查找资料,发现了两种指导方式:RAIL Model 和 PRPL Pattern ,下面是带有我的理解的部分翻译。git
翻译时 RAIL Model 原文 Last updated 2019-02-12 ,PRPL Pattern 原文 Last updated: Nov 5, 2018 。github
RAIL 是一个以用户为中心的性能模型,它将用户的体验分解为关键的操做。RAIL 的目标和方针旨在帮助开发人员和设计人员确保每个操做都有良好的用户体验。经过设计一个考虑性能的结构,RAIL 使设计人员和开发人员可以有效的关注影响用户体验最大的工做。web
每一个 web 应用程序的生命周期都有四个不一样的方面,性能以不一样的方式适合它们:浏览器
在 RAIL 的上下文中,目标(goals)和方针(guidelines)有特殊的含义:缓存
让用户成为你的性能工做的焦点。下表描述了用户如何感知性能延迟的关键指标:安全
延迟时间 | 用户反应 |
---|---|
0 - 16ms | 人们特别擅长跟踪运动,若是动画不流畅,他们就会对运动心生反感。 用户能够感知每秒渲染 60 帧的平滑动画转场。也就是每帧 16ms(包括浏览器将新帧绘制到屏幕上所需的时间),留给应用大约 10ms 的时间来生成一帧。 |
0 - 100ms | 在此时间窗口内响应用户操做,他们会以为获取的结果是当即的。时间再长,操做与反应之间的联系就会中断。 |
100 - 300ms | 用户会体验到轻微的可感知延迟。 |
300 - 1000ms | 在此窗口内,延迟感受像是一个连续任务天然进展的一部分。对于网络上的大多数用户,加载页面或更改视图表明着一个任务。 |
1000+ms | 超过 1s ,用户对正在执行的任务失去注意力。 |
10,000+ms | 用户感到失望,可能会放弃任务,以后他们或许不会再回来。 |
用户对性能延迟的感知不一样,这取决于网络条件和硬件。例如,经过快速 Wi-Fi 链接在功能强大的台式机上,1000ms 内的加载体验是合理的,所以用户已经习惯了 1000ms 的加载体验。但低于 3G 链接速度较慢的移动设备来讲,5000ms 内的加载体验是一个更实际的目标,所以移动用户一般更耐心。网络
在 100ms 内完成由用户输入启动的过分。用户花费大部分时间是在等待站点响应他们的输入,而不是等待站点加载。app
目标是在 100ms 内响应输入,那么为何咱们的预算只有 50ms ?这是由于除了输入处理以外,一般还有其它的工做正在处理,而这部分工做占据了可接受输入响应的部分时间。若是应用程序在空闲时间以建议的 50ms 执行工做,这意味着若是在其中一个工做块期间发生输入,则输入的排列等候能够长达 50ms。根据这一点,假设只有剩余 50ms 可用于实际的输入处理是安全的。此效果在下图中可见,显示了在空闲任务队列中,输入是如何接受的,从而缩短了可用的处理时间:ide
最大化空闲时间以增长页面在 50ms 内响应用户输入的可能性。工具
当页面加载缓慢时,用户的注意力就会转移,用户会认为任务已经中断。快速加载的站点具备更长的平均会话时间、更低的跳出率和更高的广告可视性。
PRPL 描述了一种模式,用于使网页更快的加载并变得可交互:
Apply instant loading with the PRPL pattern 中主要结合了一种工具进行讲解,偏重实际操做,这里就很少介绍了。