在WPO性能优化过程中,我们需要在本地浏览器模拟用户访问网站行为。
我们通常模拟两种情况:
第一种:在无缓存状态下用户打开网页的情况
这种情况很容易模拟,无缓存情况就是访客第一次访问你的网页,浏览器中没有缓存的状态。
你只要重新打开一个浏览器窗口,IE进入 Internet 选项-清除浏览器缓存,就ok了。
第二种:在全缓存状态下用户打开网页的情况。
这种情况有些麻烦。全缓存是指这么一种状态:用户已经访问过你的网页,并且你的网页组件中也添加了expires header,浏览器中保留着缓存以及expires header信息。
A情况:我们先说说如果没有记录expires header信息的情况下,浏览器中还是会保留缓存。当用户第二次访问的时候,浏览器看到有缓存了,但还是会发送一个“条件get (conditional GET)”请求给服务器,询问自己的缓存有没有过期,也就是问服务器上面对应的文件有没有修改过。如果服务器说修改啦,就重新下载一次;如果服务器说没修改,那么浏览器就放心的使用自己的缓存,从而加快了访问速度。不过这种情况,浏览器和服务器之间还是会有两次通话,一次是发“条件GET”请求,询问缓存是否能用,一次是接收服务器发来的反馈信息。
B情况:如果加了expires header信息,浏览器就可以省掉上文的两次和服务器的通话了。所以添加expire header是WPO网站性能优化的重要一环。
浏览器包含缓存和expires header信息,就是全缓存状态。我们该如何模拟全缓存状态呢?
点击浏览器的reload按钮?
错!点击reload按钮,只能模拟A情况。也就是浏览器对每个缓存组件都发送“条件GET”请求,每个组件两次通话省不了。
点击浏览器地址栏,然后点击enter?
正确!这种方式,可以正确模拟出全缓存状态,也就是浏览器对于expired headers还生效的组件不再发送请求给服务器。网页速度最快。
Steve Souders在他的博客 中做了这样的实验
第一次访问样板网站 —— 无缓存 共68个组件
第二次访问样板网站 —— 全缓存,仅下载4个组件 (模拟方法:点击地址栏,然后点击回车)
以上模拟全缓存的方法,在IE / Chrome / Firefox 上都是成功的。
但在Safari 上却行不通,Steve Souders也有相关的实验,参见同一链接。
作者: 谭砚耘@WPO及网站可用性-科研笔记
版权属于: 谭砚耘 (TOTHETOP至尚国际 )
版权所有。转载时必须以链接形式注明作者和原始出处
如果你希望与作者交流,请发送邮件到 tanyanyun/at/163.com 别忘了修改小老鼠