Chrome小窥探

先介绍背景知识,一个网页连接所花的大概时间:

没有本地缓存,相对较快的DNS lookup(50ms),
TCP握手,SSL协商,以及一个较快服务器响应时间(100ms)和一次延迟(80ms,在美国国内的平均值): 50ms for DNS 80ms for TCP
handshake (one RTT)

160ms for SSL handshake (two RTT’s)

40ms (发送请求到服务器)

100ms (服务器处理)

40ms (服务器回传响应数据)

一个请求花了470毫秒, 其中80%的时间被网络延迟占去了。

Google
Chrome做到“快”,下的功夫在DNS预解析(pre-resolve) 上,做到“越来越快”,功夫在预测功能优化上,即根据用户习惯得出用户这厮的浏览习惯而预测未来。

预解析会参考以下几个场景得出是否解析的结论:

1)鼠标悬停于某个标签上

2)Omnibox建议(与搜索引擎结合,据说是Chrome的一项创新)

3)之前浏览记录

4)浏览器自己猜测

而根据预解析这猜测是否成功,记录下来,下次就有了更好的猜测依据。打开 chrome://predictors ,可以看到chrome对解析网页命中率的记录,对于记录的删除,采用的算法是LRU(Least
Recently Used)。

还有些预解析的,比如每次打开chrome,都会先把用户最常访问的10个网站给解了(过两天闲下来就验证下=。=不过这惰性,估计是过两天就忘了这事。。。)

除了DNS pre-resolve,chrome中我觉得比较有意思的还有:

  • Socket reuse: 在Socket Pool中提供持久可用的TCP connections

  • 预渲染(猜你会到哪个网站,先把它藏在后台)

至于用预测功能优化,这里面扯到算法,跟其他的预测算法在我看来有相似之处,就不想再写了。

参考:

https://www.igvita.com/posa/high-performance-networking-in-google-chrome/

http://news.cnblogs.com/n/192502/

时间: 2024-10-10 15:05:32

Chrome小窥探的相关文章

Chrome 小工具: 启动本地应用 (Native messaging)

最近遇到一个新的问题.需要使用Chrome 插件, 从我们对我们当地的一个网站之一启动C#应用,同时通过本申请值执行不同的操作. 在这里记录下解决的过程.以便以后查找 首先我们须要新建一个google的插件 这个插件包括了三个文件 manifest.json(名字不可改, 建插件必须文件),background.js(文件名称可改, 后台文件),content.js(content script文件 负责与站点页面交互) 首先我们来看看manifest.json 这个文件 <span style

这些小工具让你的Android 开发更高效

在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大家推荐一下Android 开发遇到的小工具,来让你的开发更高效. Vysor Vysor 是一个可以将手机的屏幕投影到电脑上,当然也可以操作,当我们做分享或者演示的时候,这个工具起到了作用. Vector Asset Android Studio 在1.4 支持了VectorAsset,所谓VectorAsset:它可以帮助你在Android 项目中添加Materia

Scratch 少儿编程网

少儿编程网  http://www.shaoerbianchengwang.com/scratch <Scratch游戏制作教程>资料http://www.shaoerbianchengwang.com/tag/scratch%E6%B8%B8%E6%88%8F%E5%88%B6%E4%BD%9C[scratch游戏制作案例及教程]猫狗大战(抓小偷)[scratch游戏制作案例及教程]植物大战僵尸(口算篇) [scratch游戏制作案例及教程]黄金矿工(挖宝藏) [scratch游戏制作案例及

公开求助:博客园Markdown编辑器的改进(太简陋)

本人学生党,学业繁重,对JavaScript等一无所知,同时无法忍受博客园默认的markdown编辑器--它太丑.太简陋了. 然后,我看到一个网站:这大概是"所见即所得"Markdown吧_V2EX 上也能用 发现这个项目 HyperMD HyperMD是一个在线的能够"实时预览"的markdown编辑器. HyperMD 是一组 [CodeMirror][] 插件.模式.主题.编辑器命令(Commands)和按键绑定(KeyMap)等. 你可以在一个页面上同时使用

Chrome自带恐龙小游戏的源码研究(完)

在上一篇<Chrome自带恐龙小游戏的源码研究(七)>中研究了恐龙与障碍物的碰撞检测,这一篇主要研究组成游戏的其它要素. 游戏分数记录 如图所示,分数及最高分记录显示在游戏界面的右上角,每达到100分就会出现闪烁特效,游戏第一次gameover时显示历史最高分.分数记录器由DistanceMeter构造函数实现,以下是它的全部代码: 1 DistanceMeter.dimensions = { 2 WIDTH: 10, //每个字符的宽度 3 HEIGHT: 13, //每个字符的高 4 DE

Chrome自带恐龙小游戏的源码研究(七)

在上一篇<Chrome自带恐龙小游戏的源码研究(六)>中研究了恐龙的跳跃过程,这一篇研究恐龙与障碍物之间的碰撞检测. 碰撞盒子 游戏中采用的是矩形(非旋转矩形)碰撞.这类碰撞优点是计算比较简单,缺点是对不规则物体的检测不够精确.如果不做更为精细的处理,结果会像下图: 如图所示,两个盒子虽然有重叠部分,但实际情况是恐龙和仙人掌之间并未发生碰撞.为了解决这个问题,需要建立多个碰撞盒子: 不过这样还是有问题,观察图片,恐龙和仙人掌都有四个碰撞盒子,如果每次Game Loop里都对这些盒子进行碰撞检测

Chrome自带恐龙小游戏的源码研究(五)

在上一篇<Chrome自带恐龙小游戏的源码研究(四)>中实现了障碍物的绘制及移动,从这一篇开始主要研究恐龙的绘制及一系列键盘动作的实现. 会眨眼睛的恐龙 在游戏开始前的待机界面,如果仔细观察会发现恐龙会时不时地眨眼睛.这是通过交替绘制这两个图像实现的: 可以通过一张图片来了解这个过程: 为实现图片的切换,需要一个计时器timer,并且需要知道两张图片切换的时间间隔msPerFrame.当计时器timer的时间大于切换的时间间隔msPerFrame时,将图片切换到下一张,到达最后一张时又从第一张

Chrome自带恐龙小游戏的源码研究(一)

众所周知,Chrome浏览器在网络不通的情况下,会出现一个霸王龙翻越障碍的小游戏:  这个游戏做得小巧精致,于是探究了一下它的源码,发现代码写得相当严谨并且富有技巧性,用来学习再好不过了. 游戏虽然看起来简单,但也有几千行的代码量.主要包括五个构造函数: 游戏逻辑控制函数Runner 背景管理函数Horizon 地面 (HorizonLine) 云朵 (Cloud) 昼夜更替 (NightMode) 障碍物 (Obstacle) 霸王龙函数Trex 分数记录函数DistanceMeter 游戏结

Chrome插件开发 小插件-acfun看图 1

之前在acfun看文章,经常遇到别人发其他网站的图而导致无法看到.这很不好,而且要想看到这些图片,操作是获得图片地址后,将最后的jpg改为jpeg即可,这种简单的操作应该是很容易实现的,于是我要开发一个简单的小插件来方便自己看评论.... 首先,先介绍一下开发的原因,在acfun下的评论中有时候会有一些其他人发的图片,这些图片由于是从自己的网盘或者空间发出来的,类似百度,会被屏蔽,出现 一般的解决方法是获得其图片地址后,在新的页面打开,将最后的jpg后缀改为jpeg,然后就可以看到图片了. 然后