WebPagetest 是一个很有用的网站。可以帮你分析网站的性能,类似 GTMetrix ,比较独特的地方是 WebPagetest提供多网站对比,还提供手机客户端性能统计,以及视频演示功能。也就是说,你可以将自己网站首页打开过程,录制下来,以备以后查看。
你可能觉得这个视频展示功能,看起来没有神马特别,我用录屏软件不就行了么?
是的,可是用录屏软件无法模拟一种特殊的情况,就是JS阻断的状况。
在笔者之前的博文 《一小段js代码引发的网站可用性灾难–WPO优化反面实例》 , 《WPO实验:如果Google被墙,网站会出现怎样的杯具?》 中我们看到JS阻断会引起很严重的后果,造成网页迟迟无法完成加载,用户看到一片白屏的情况。
可是,我们应该如何模拟出JS阻断的效果呢?举个例子,拿 buyonme.com 网站来说,在首页加载了三个外部站点的JS文件,分别来自:
www.google-analytics.com Google访问分析
chatserver.comm100.com 即时聊天插件
translate.google.com Google翻译工具
我们现在想观测一下,上述三台服务器都出现故障的情况会发生什么灾难(幸好现实中,google的服务还是颇稳定的,不过因为有伟大的墙,所以还是有可能出故障的)。
这个时候就有一个难点了,由于以上三台服务器都正常运行,你怎么能测试故障环境呢?
哈!有的哥们说,那简单啦,我们修改一下 hosts 文件不就得了?
对!这个思路是对的,把上述三个主机名指向错误的IP地址,来模拟下载js组件故障。可以新的问题又来了,你如果随便指向一个IP,马上就会反馈:该IP不存在,或者该IP不存在该主机名的信息。
我们是想测试服务器连接不上然后超时的状态,如果随便指向一个IP,马上就有错误信息反馈回来了,那不就测试不出来想要的效果了么?
呵呵,还有一个方法。这个世界上有一种服务器叫“黑洞服务器 Blackhole Server”,也就是当你发送请求过去以后,就进入了黑洞,再也没有信息反馈出来了。刚好可以模拟对方服务器故障或超时的状态。
我们提供一个黑洞服务器,免费使用:blackhole.webpagetest.org
有了以上思路,我们就可以使用 WebPagetest 来模拟JS阻断了。
第一步:做基本设置,可以设置浏览器类型,也可以设置宽带类型,还可以选择地理位置
第二步:设置Script代码,也就是将主机名指向黑洞服务器,在WebPagetest下的Script要这么写
setDnsName www.google-analytics.com blackhole.webpagetest.org
setDnsName chatserver.comm100.com blackhole.webpagetest.org
setDnsName translate.google.com blackhole.webpagetest.org
setDnsName ajax.googleapis.com blackhole.webpagetest.org
setDnsName apis.google.com blackhole.webpagetest.org
setDnsName connect.facebook.net blackhole.webpagetest.org
setDnsName platform.twitter.com blackhole.webpagetest.org
navigate http://www.buyonme.com/
(上面的1、2、3条是必要的,4、5、6、7行是针对常用的JS外部插件做得设置,在本例中可以删除。最后一行是测试的网址)
第三步:勾选“生成视频”
第四步:点击“Start Test”
第五步:点击结果页面的“Watch Video”
大功告成。你可以拿着视频展示的结果给老板看,告诉他网站存在多么严重的WPO问题。
对于Buyonme网站,下面是两个模拟JS阻断的视频:
对外部JS未作异步调用: http://www.webpagetest.org/video/view.php?id=111204_KZ_2CY09.1.0 24秒完成主要页面载入
对外部JS已作异步调用: http://www.webpagetest.org/video/view.php?id=111207_54_2E2VQ.1.0 5秒完成主要页面载入
作者: 谭砚耘@用户体验与可用性设计-科研笔记
版权属于: 谭砚耘 (TOTHETOP至尚国际 )
版权所有。转载时必须以链接形式注明作者和原始出处
如果你希望与作者交流,请发送邮件到 tanyanyun/at/163.com 别忘了修改小老鼠