把性能作为优先事项不仅对用户有益,对业务也有益。虽然该集合的最佳做法主要侧重于优化 Google 发布商代码 (GPT) 集成,但许多其他因素也会影响特定网页的整体性能。每当您做出更改时,请务必评估这些更改对网站性能的所有影响。
衡量网页性能
为了解某项更改对网站性能的影响,您首先需要建立基准以进行比较。最好的办法是制定性能预算,以便确定您的网站目前或可能不满足的创意基准。不过,如果您有兴趣将性能保持在固定水平,则可以将网站当前的性能指标作为基准。
如需开始衡量性能,建议您组合使用以下方法:
- 合成监控
- 您可以使用 Lighthouse 和 Lighthouse 发布商广告评估服务等工具在实验室环境中衡量网页性能。这种类型的衡量不需要最终用户互动,因此非常适合用于自动化测试,并且可用于在向用户发布更改之前验证更改的效果。
- 真实用户监控 (RUM)
- 您可以使用 Google Analytics(分析)和 PageSpeed Insights 等工具直接从用户那里收集真实的性能数据。这种衡量方法以最终用户互动为基础,因此可用于识别最后一公里的性能问题,这类问题不易通过合成测试发现。
请务必进行测量并定期与您的基准进行比较。这可让您很好地了解网站的表现在一段时间内是否是在正确的方向上发展的。
选择要测量的内容
就性能而言,没有一个指标可以告知你关于网站表现的所有必知信息。您需要查看涵盖网页性能各个方面的各种指标,才能全面了解情况。下表列出了一些关键性能指标和建议指标。
性能领域 | |
---|---|
感知的加载速度 |
测量
网页能够快速加载和呈现所有界面元素的速度。 建议的指标
First Contentful Paint (FCP) |
网页加载响应速度 |
测量
网页在初次加载后的响应速度。 建议的指标 |
视觉稳定性 |
测量
界面元素的偏移程度以及这些偏移是否干扰用户互动。如需了解详情,请参阅最大限度地减少布局偏移。 建议的指标 |
除了网页性能之外,您可能还需要衡量广告特有的业务指标。您可以从 Google Ad Manager 报告中获取关于每个广告位的展示次数、点击次数和可见度等信息。
测试变更
定义性能指标并开始定期衡量后,您就可以使用这些数据来评估网站更改对性能的影响。为此,您需要将在更改之后测量的指标与在更改之前测量的指标(和/或您在前面确立的基准)进行比较。通过此类测试,您可以及早发现并解决性能问题,避免这些问题成为您的业务或用户遇到的重大问题。
自动测试
您可以通过合成测试来衡量不依赖于用户互动的指标。您应在开发过程中尽可能频繁地运行这些类型的测试,以了解未发布的更改对性能的影响。这种主动测试有助于在向用户发布更改之前发现性能问题。
为实现此目的,一种方法是将合成测试添加到持续集成 (CI) 工作流中,每当发生更改时,测试都会自动运行。您可以使用 Lighthouse CI 将合成性能测试集成到许多 CI 工作流中:
A/B 测试
在实际向用户发布更改之前,无法对依赖于用户互动的指标进行全面测试。如果您不确定更改的行为,可能会有风险。缓解这种风险的一种方法是 A/B Testing。
在 A/B 测试期间,系统会随机向用户投放网页的不同变体。您可以使用此方法向一小部分流量提供已修改的网页,而大部分网页则继续提供未经修改的网页。结合 RUM,您可以评估这两个组的相对性能,以确定哪组效果更好,而不会给 100% 的流量带来风险。
A/B 测试的另一个优势在于,它们可以更准确地衡量更改的效果。对于许多网站来说,很难确定性能上的小差异是由近期的变化还是正常的流量变化所致。由于 A/B 测试的实验组代表总体流量的固定百分比,因此指标应该与对照组相差一个恒定的系数。因此,我们可以更自信地将 2 个组之间的差异归因于所测试的更改。
优化工具和 Google 优化工具等工具可帮助您设置和运行 A/B 测试。不过请注意,基于代码的 A/B 测试(这些工具的默认配置)本身可能会对性能产生负面影响,并提供误导性结果。因此,强烈建议进行服务器端集成:
A/B 测试结果
如需使用 A/B 测试来衡量更改的影响,您需要从对照组和实验组中收集指标,并将它们进行比较。为此,您需要一种方法来了解哪些流量属于哪个组。
对于网页性能指标,在每个网页上添加简单的标识符通常就足够了,以指明是投放的是对照版本还是实验版本。此标识符可以是您需要的任何内容,只要它能够解析指标并将其关联即可。如果您使用的是预构建测试框架,系统通常会自动为您处理此操作。
对于广告专属业务指标,您可以使用 GPT 的键值对定位功能来区分广告请求与对照组与实验组:
// On control group (A) pages, set page-level targeting to:
googletag.pubads().setTargeting('your-test-id', 'a');
// On experimental group (B) pages, set page-level targeting to:
googletag.pubads().setTargeting('your-test-id', 'b');
然后,您可以在生成 Google Ad Manager 报表时引用这些键值对,以便按组过滤结果。