Trustworthy Online Controlled Experiments Part 2 Chap 5
设计一个减速实验
看起来微不足道的实验开始变得复杂: 第一个问题是将减速放到哪里? Bing最初放慢了发送Chunk1的速度,这个改动影响很大,由于以下原因,它被认为是不合理的:
由于Chunk1 没有什么可计算的,因为 Chunk1是从服务器即时发送的。因此,可以说,未来会改善Chunk1的延迟是不合理的。
Chunk1是通过绘制页面镶边或框架为用户提供反馈的消息,表明已正确接收到请求。延迟会带来与网站整体性能无关的多种负面影响。
延迟的正确位置是服务器完成Chunk2的计算时,Chunk2是URL相关的HTML。延迟响应,可以模拟服务器花费更长的时间来生成HTML相关部分。
延误应持续多长时间?可以考虑如下因素:
每个指标都有一个置信区间。我们希望一个比较大的效果,以便我们可以更准确地估计“斜率”。下图显示了在延迟为100毫秒和250毫秒时的两种可能的测量。如果两者的置信区间大小相似,则在250毫秒处进行测量可以为我们提供更有意义的置信区间(不过0)。这个因素要求使延迟更大。
较长的延迟意味着我们的一阶泰勒级数逼近可能不太准确。该因素要求较短的延迟。
长时间的延迟会对我们的用户造成更大的伤害,因为速度越快越好,因此,慢的响应会对用户体验造成伤害。该因素要求较短的延迟。
另一个问题是,延迟是固定的还是一定比例的,以解决地理上网络的差异(例如,南非的Bing用户的页面加载时间非常慢,因此250毫秒的延迟可能感觉不多)。鉴于该实验正在模拟后端服务器端延迟,因此恒定的延迟被认为是一个不错的选择。如果我们想对与网络差异有关的情况进行建模,则该实验可能基于例如有效负载大小而不是延迟。
最后,还有一个问题,加速对于回话的第一个页面重要, 还是后续的页面重要?某些加速技术(例如,JavaScript缓存)可以提高会话中后续页面的性能。
基于上述因素,Bing 认为100毫秒和250毫秒的减速是合理的选择。
不同的部分,不同的影响
页面不同区域的性能有所不同。显示Bing的算法搜索结果的速度至关重要,并且速度变慢对关键指标(如收入和关键用户指标)产生重大影响。
页面的其他区域呢?事实证明,它们并不那么重要。在Bing,右窗格上的某些元素加载较晚(从技术上讲,是在window.onload事件之后)。在实验中,右窗格元素显示时延迟了250毫秒, 实验中有近2000万用户,但未检测到关键指标收到了显著的影响。
通常,window.onload 会检测PLT以判断浏览器完成了所有动作, 而不是上面说的序列 。但是,这种测量与现代网页相比存在严重缺陷。正如史蒂夫·索德斯(Steve Souders)(2013)所言,亚马逊页面可以在的2.0秒内呈现(维基百科撰稿人,折叠之上,2014年),即页面的可见部分,但是window.onload事件在5.2秒时触发。 Schurman和Brutlag(2009)报告说,可以采用逐步现实的办法, 先显示页眉,以提高用户体验。另外一个例子,Gmail的情况与Amazon 的情况相反:window.onload在3.3秒时触发,这时只有进度条可见,而首屏内容在4.8秒时才能显示。
术语“感知性能”通常表示一种直观的想法,即一旦页面显示完毕,用户便可以在使用页面。感知性能的概念比实际测量更容易抽象化,但是 cept.ready()不在任何浏览器的路线图上(Souders 2013)。不过,目前已经一些估计感知性能的方法,包括:
Time to first result: 当列表显示时(例如在Twitter上),第一个tweet的时间可能是一个度量标准。
Above the Fold Time (AFT): 您可以测量直到折痕以上的像素被绘制的时间(Brutlag,Abrams和Meenan 2011)。在实施中必须使用试探法来处理视频,GIF动画,等动态内容。可以为“绘制的像素百分比”设置阈值,以避免琐碎的,对结果影响不大的因素延长测量时间。
Speed Index: 这是AFT(Meenan 2012)的概括,它对页面上可见元素的显示时间进行了平均。这样可以避免琐碎的元素显示较晚的情况对结果有干扰,但是仍然会出现动态内容在折页上方变化的情况。
Page Phase Time and User Ready Time: Page Phase Time 需要确定哪个渲染Phase 可以满足感知性能,并且Phase 由像素变化速度确定。 User Ready Time(用户就绪时间)是指页面的基本元素(在具体上下文中不同)准备就绪的时间(Meenan,Feng和Petrovich 2013)。
另外一种方法是测量用户点击操作的时间,例如点击次数。当用户有预期的动作时,此技术效果很好。比点击时间更复杂的一种方法是测量成功点击的时间,可以将“成功”定义为让用户在30秒钟内不会再次回到当前页面,从而避免了“诱饵”点击。这样的度量标准不受许多性能度量标准所需要的启发式方法的影响,并且对许多更改都具有鲁棒性。但是,这种度量标准的缺点是:它们仅在预期用户会有继续的动作时才起作用。如果用户发出“巴黎时间”的查询并获得了很好的即时答案,那么用户则无需单击任何内容。
极端结果
尽管速度很重要,但我们也看到了一些地方过度强调了速度的重要性。在Google的Marissa Mayer的Web 2.0演讲中,描述了一个实验,其中Google将搜索引擎结果页(SERP)上的搜索结果数量从十个增加到了三十个(Linden 2006)。她声称实验组中来自Google搜索者的流量和收入下降了20%。因为,该页面花了半秒多的时间来生成。这里, 速度是一个关键因素,但在这个实验中,其他多个因素也被更改了,我们怀疑速度导致的损失的仅仅占一小部分。。
相反,Etsy的Dan McKinley(2012)声称200毫秒的延迟根本没有关系。对于Etsy用户来说,性能可能并不关键,但我们认为更可能的原因是该实验没有足够的统计功率(Power)来检测差异。如果告诉组织性能无关紧要,将会使网站变慢,甚至导致大量用户的流失。
最后,在极少数情况下,太快的速度可能会导致用户认为他们的请求根本没有被真的处理,因此某些产品会添加伪造的进度条(Bodlewski 2017)。
在查看实验结果时,先想清楚自己需要的信任级别,并记住,即使该结果适用于特定站点,也可能不适用于其他站点。你可以做的事情是汇报一个实验是否成功。这就是科学方法发挥最大作用的方式。(我理解, 作者想说的是, 在解释实验的时候, 不要扩大实验结果的意义, 实事求是, 出来什么结果就报告什么结果, 不要过度解读。)