或者

Facebook团队关于网页缓存的再实践

作者:小鸡炖蘑菇 浏览:159 发布时间:2018-04-02
分享 评论 0

译者前言:


在8年之前,Yahoo团队曾经对网页中的缓存做了比较详尽的研究,但是随着互联网的高速发展,研究数据发生了一些变化.这篇文章主要是Facebook的web团队对现在缓存情况一些数据收集和研究.包括PC和移动端资源被缓存的时间以及资源在存在的时间.网页缓存是性能优化很重要的因素,值得一读.


正文:


网页加载速度是每个网站都应该重视的因素.但是往往被大家忽略.缓存是一个提升网站访问速度非常重要的因素(因为用户在下次访问的时候不需要重新计算或者下载已经缓存的资源)我们团队(facebook web团队)最近针对目前没有缓存的现状进行了一番讨论,主要问题是:在facebook,.我们每天都会发布两个版本,怎么样才能令缓存更有效率?怎么样的缓存策略才适合我们?


在找解决方案的时候, 我们发现雅虎性能优化研究博客上已经有了一篇关于性能研究的文章.


但是令我们非常吃惊的是:20%的页面访问是在空缓存的情况下进行的.但是这个研究结果距离现在有8年了,那个时代刚发布IE7,jquery也刚发布第一个版本,所以我们决定重新研究一下,看现在是不是有所改善.


重新研究:


在之前的研究当中,Yahoo在服务器创建了HTTP头设置了图片的过期时间和上次修改时间,如果图片没有发生改变,就用GET请求发送给服务器一个最后修改时间的信息,如果图片没有修改,就返回304(没有修改)来替换200(请求成功).因为服务器可以记录浏览器请求的请求状态,所以Yahoo用服务器日志来统计缓存的用户数.


像那样的研究方法一样,我们创建了一个既能发送图片请求也能在数据库当中记录日志的PHP终点.这张图片用http头信息来控制浏览器的缓存和其他通过代理产生的缓存.之后在用户请求图片的时候记录这些信息.