性能监控:RUM vs. 合成监控
合成监控和真实用户监控 (RUM) 是两种用于监控和提供 Web 性能洞察的方法。RUM 和合成监控提供不同的性能视图,并具有各自的优点、良好的用例和缺点。RUM 通常最适合理解长期趋势,而合成监控非常适合回归测试和缓解开发过程中较短期的性能问题。在本文中,我们将定义和比较这两种性能监控方法。
合成监控
合成监控涉及在“实验室”环境中监控页面性能,通常使用自动化工具在尽可能一致的环境中进行。合成监控包括部署脚本来模拟最终用户可能通过 Web 应用程序执行的路径,并报告模拟器体验到的性能。测量的流量不是来自您的实际用户,而是合成生成的流量,用于收集页面性能数据。
合成监控的一个例子是 WebPageTest.org。它是在一个受控环境中进行的,地理位置、网络、设备、浏览器和缓存状态等变量都是预先确定的。它为托管服务器和 CDN 提供的每个资源以及第三方脚本(如广告和分析服务)生成的每个第三方资源和资源请求提供瀑布图。
控制环境变量有助于理解性能瓶颈发生在何处,并识别任何性能问题的根源。例如,但这并不能反映用户的实际体验,尤其是长尾用户。
合成监控可以是回归测试和生产站点监控的重要组成部分。在开发的每个阶段以及在生产环境中定期测试站点。作为 持续集成 的一部分,与基线性能的任何变化都应导致推送失败。如果生产环境中出现问题,合成监控可以提供见解,帮助在问题对用户体验产生负面影响之前进行识别、隔离和解决。
真实用户监控
真实用户监控 (RUM) 从真实用户的计算机上衡量页面性能。通常,第三方脚本会在每个页面上注入一个脚本,以测量每个请求的页面加载数据并进行报告。此技术监控应用程序的实际用户交互。在真实用户监控中,真实用户的浏览器会报告体验到的性能指标。RUM 有助于识别应用程序的使用方式,包括用户的地理分布及其对最终用户体验的影响。
与合成监控不同,RUM 捕获真实用户在各种设备、浏览器、网络或地理位置上的性能。当用户与应用程序交互时,所有性能计时都会被捕获,无论采取什么操作或查看了哪些页面。RUM 监控实际用例,而不是由工程师、产品经理或营销团队预定义的合成、假定用例。这对于大型网站或复杂应用程序尤其重要,在这些应用程序中,功能或内容不断变化,并且访问应用程序的人群可能与创建它的人在生活经历上存在很大差异。
通过利用 RUM,企业可以更好地了解其用户并识别其网站上需要最多关注的区域。此外,RUM 还有助于了解您用户的地理分布或渠道分布趋势。了解您的用户趋势有助于您更好地定义业务计划,并且从监控的角度来看,可以让您识别需要针对性优化和性能改进的关键领域。
RUM vs 合成
合成监控非常适合在开发生命周期中捕获回归,尤其是在使用 网络限制 时。它相当容易、成本低廉,并且非常适合在开发过程中进行性能抽查,作为衡量代码更改效果的有效方法,但它不能反映真实用户所经历的情况,并且仅提供狭窄的性能视图。
另一方面,RUM 提供来自使用网站或应用程序的真实用户的真实指标。虽然这更昂贵且可能不太方便,但它提供了至关重要的用户体验数据。
Performance APIs
有很多监控服务。如果您想构建自己的监控系统,可以查看性能 API,主要是 PerformanceNavigationTiming
和 PerformanceResourceTiming
,还有 PerformanceMark
、PerformanceMeasure
和 PerformancePaintTiming
。