最近公司架构师推荐看了一篇文件,觉得写得很好,特做笔记:

http://aosabook.org/en/posa/high-performance-networking-in-chrome.html

过去的浏览器只有一个进程,所有打开的 page 都共用同一个内存地址空间,任何地方发生的错,都回影响整个进程。

chrome 是基于多进程模式,每一个tab都是一个单独进程,由此提供隔离的内存和安全sandbox

web 程序的执行包括3个方面

1)fetching resources (using Blink)

2) page layout and rendering: ( v8 engine)

3) JavaScript executio:

后两个都是单线程的因为 DOM 的修改不能并发;而JS是单线程语言;但尤其现在cpu的强大,它们都不是瓶颈问题。

性能的瓶颈在第1) fetching resources

一个普通 page 包含下面的东西

  • 1280KBinsize
  • composed of88resources
  • connects to15+ distincthosts

所以网络传输在web应用时短和爆发性的

资源请求的过程

给定url, browser 首先判断是否在cache, html header有(Expires,Cache-Control, etc.),browser 就访问cache ,否则花费时间的网络访问开始了。

包括

1) proxy 检查

2) dns

3) tcp ( 三次握手 ), 如果是 ssl 增加2遍三次握手

4) 服务处理和相应

  • 50 ms forDNS
  • 80 ms forTCPhandshake (oneRTT)
  • 160 ms forSSLhandshake (twoRTTs)
  • 40 ms for request toserver
  • 100 ms for serverprocessing
  • 40 ms for response from theserver

That’s 470 milliseconds for a single request

再看时间,用户可接受的latency 是1秒,所以必须大量减少,网络访问的开销。

Table 1.1- User perception of latency
Delay User Reaction
0 - 100 ms Instant
100 - 300 ms Small perceptible delay
300 - 1000 ms Machine is working
1 s+ Mental context switch
10 s+ I’ll come back later…

原先以为这个开销是没办法减少的,但 google 的确通过改进 chrome 的 network stack 大大减少了这些开销

通过kernel process 的 network模块给其他模块提供统一的服务

好处是可以做 socket pool, socket resue, 验证, cookie, cache 可以被所有的 render 进程共享,还有利于优化

FYI

对于手机,平板上浏览器,其内存小,用电有限制,但用户开的页面也不多,chrome 根据内存大小来决定 render 进程的数目。如果资源太小,android退化为单线程多进程模式。对于手机需要考略 radio 的耗电, 付费网络的使用等因素

除了构造network stack,chrome 对网络的优化 preXXXX ( 提前做某些事情)

Table 1.3- Network optimization techniques used by Chrome
Technique Description
DNSpre-resolve Resolve hostnames ahead of time, to avoidDNSlatency
TCPpre-connect Connect to destination server ahead of time, to avoidTCPhandshake latency
Resource prefetching Fetch critical resources on the page ahead of time, to accelerate rendering of the page
Page prerendering Fetch the entire page with all of its resources ahead of time, to enable instant navigation when triggered by the user

但用户鼠标到某link(还没有点下), 当用户在 url 输入 xxx, 就先去做事情,当然只所以能做这些,是对用户行为进行追踪和统计,防止了无效的 preXXXX.

除了这些 google 还发明一些标签,嵌入在 html 中,明确指示 chrome 做 preXXX 的事情。

看来只要仔细研究,是可以把一些不可能的事情变现实。

笔记:Chrome 对浏览器的改进相关推荐

  1. linux chrome ui字体,谷歌Chrome 69浏览器标签栏字体模糊的解决方法

    谷歌发布的Chrome 69浏览器有了很大的提升,比如新版UI.安全密码.速度提升.画中画功能等许多方面的改进,但是,有一些用户在使用Chrome 69后反馈称标签栏的文字在高分屏上有些模糊不清或者说 ...

  2. 【工具】部分浏览器截图操作--Edge+Chrome+360浏览器

    [工具]部分浏览器截图操作–Edge+Chrome+360浏览器 一.Google浏览器截图 1,进入Google浏览器开发者模式 在网页空白处右击鼠标,选择"检查(N)",打开控 ...

  3. chrome/chromium浏览器的Enter passwod to unlock your login keyring

    简直就跟牛皮癣一样,打开浏览器总是出现这个,困扰我很多年了 sudo apt-fast install seahorse 启动命令 seahorse & 把下面图中左上角Login,右键会出来 ...

  4. 最新版chrome 70浏览器同步、清除Cookie设置将更改

    最新版chrome 70浏览器同步.清除Cookie设置将更改 谷歌在最新的Chrome 69浏览器中引入了一项改动,用户在浏览器上登录任何谷歌旗下的服务时,也将同时在浏览器登录自己的谷歌账号.此举受 ...

  5. 360浏览器支持ajax吗,请问IE11,chrome,360浏览器7.1极速等这些浏览器不支持ajax技术吗?...

    请问IE11,chrome,360浏览器7.1极速等这些浏览器不支持ajax技术吗?0 qdh_water2016.01.12浏览69次分享举报 以下是源代码,下面的代码在IE9,IE8,360浏览器 ...

  6. 基于.net开发chrome核心浏览器【五】

    原文:基于.net开发chrome核心浏览器[五] 一:本篇将解决的问题 本章主要为了解决一下几个问题: 1.JsDialog的按钮错位的问题 我们开发出的浏览器,在有些操系统上调用alert,con ...

  7. Chrome内核浏览器显示【您的时钟快了,您计算机的日期和时间不正确】解决办法

    Chrome内核浏览器显示[您的时钟快了,您计算机的日期和时间不正确]解决办法 出现问题 问题原因 解决办法 综上 [您的时钟快了,您计算机的日期和时间不正确]解决办法 出现问题 这几天我使用[联想浏 ...

  8. Chrome打开浏览器弹出网页、浏览器被劫持解决方法

    Chrome等浏览器,打开浏览器弹出网页.浏览器被劫持 通常有如下几种情况,对照检查: 1.找到浏览器"快捷方式"的文件位置,然后右键打开,选择"属性": 查看 ...

  9. Chrome 55 浏览器推出 Android 离线下载功能

    谷歌已经推出适用于Mac,Windows和Linux的Chrome 55浏览器,其中一项重大更新是默使用HTML5,以便进一步让Flash寿终正寝.现在谷歌又推出Chrome 55浏览器安卓版,增加了 ...

最新文章

  1. 网站数据分析:基于用户细分的比较分析
  2. ExtJS学习:MVC模式案例(三)
  3. 【Android】Android模拟器无法上网问题
  4. php迭代器作用,PHP迭代器介绍
  5. densenet网络结构_DenseNet轻量型网络
  6. Python通过WMI读取主板BIOS信息
  7. iOS 对付内存泄漏,来说说我的调试方法
  8. Altium_Designer如何快速寻找元件和封装
  9. Springboot结合Redis实现分布式定时任务
  10. 既然选择了编程,只管风雨兼程
  11. 【礼物】的定义不同所造成的诡异反差感
  12. halcon轮廓选择
  13. 用Enterprise Architect画类图和顺序图(一)
  14. 2014年中款MacBook Pro 更换CPU散热硅脂再战5年
  15. 7脚spi OLED屏幕改造成IIC屏幕
  16. 刘德华开抖音了,一键下载华仔所有无水印视频
  17. Shodan在渗透测试及漏洞挖掘中的一些用法
  18. 计算机网络期末复习提纲,湖南科技大学《计算机网络微课堂》课题笔记
  19. #Linux#进程间通信# 管道(pipe)-匿名管道pipe
  20. Teradata 记事本

热门文章

  1. 基于HFC实现10Gbps对称数据传输
  2. Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)
  3. 20160402javaweb 开发模式
  4. 学无止境,我还在进步
  5. 写一个函数,输入一个十六进制,输出相应的十进制数。
  6. MySQL数据库基本操作1
  7. B站智能防挡弹幕的一种python实现
  8. Hadoop学习笔记—14.ZooKeeper环境搭建
  9. hive修改默认创建表格式
  10. Android 4.4环境搭建——Android SDK下载与安装