emu in blogjava

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  171 随笔 :: 103 文章 :: 1052 评论 :: 2 Trackbacks

小小和rizen尝试过定位一个cache-read耗费时间随机的变得很长的诡异问题,排除过了文件内容、文件类型、文件头等各种影响,但是很遗憾没有最终结论。emu那天看知道这个事情后猜测,会不会就是很简单的多个cache-read操作相互竞争堵塞导致的呢?这个其实很容易验证了。写了一个简单的小页面应用了一组图片,然后抓包重新打开页面,就看到下面这个图了:




第一个cache-read耗时0.2秒多,第二个(并行发起)0.3秒多,第三个0.4秒多,接下去每个图片的耗时差不多都比上一个慢0.1秒以上。结论很明显了,并发的cache-read会相互堵塞,非常严重的相互堵塞。
以上抓包是在IE6下完成的。在IE7和IE8下面情况要好一些,但是问题性质是相同的。
很多我们曾经以为cache的非常好速度应该非常快的web应用,也许其实存在着严重的cache-read速度瓶颈而不为我们所知。
网上没有搜到太多关于cache-read时间的文章,看来真是个盲点。

解决方案和网络延迟是类似的,减少cache-read请求,把多个小文件和小图片合并成大文件和大图片(而不要一厢情愿的以为小文件被浏览器缓存后会有很好的速度表现),区分优先级引用资源。还有一个可能有用的:交错的发起不可避免的异步动态网络请求和cache-read请求,让网络延迟和cache-read延迟时间叠加在一起,来节省用户实际要等待的时间。

posted on 2010-04-09 22:58 emu 阅读(3201) 评论(2)  编辑  收藏 所属分类: web优化

评论

# re: 不可忽略的 cache-read time(缓存读取延迟时间) 瓶颈 2010-04-28 11:50 xs

....厄... 貌似还真有这回事。为啥不能并发咧....
目前看来只能尽量减少请求数了....

验证码:9444..  回复  更多评论
  

# re: 不可忽略的 cache-read time(缓存读取延迟时间) 瓶颈 2010-06-01 09:39 emu
@xs
其实也不只是并发的情况下有这个问题,当打开一些大网站的时候第一个请求如果是cache或者304response,也会有类似的问题。
有米的大网站在解决这个问题的时候比较爽快,首页反正也常更新,不要cache了,全部走http,这样还快一些。比如sina前阵子刚刚做了这样的修改。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: