来源于InfoQ:

微软IE开发团队性能主管Jason Weber在一篇博 文中介绍了IE浏览器的各个子系统,并通过实验数据展示了不同网站对浏览器子系统的性能影响和权重,InfoQ中文站对相关内容做了整理,希望对 浏览器开发人员和Web应用开发人员有所帮助。

Jason Weber指出,所有现代浏览器从概念上讲都是类似的。以IE为例,它由11个核心子系统组成:

图1. IE子系统(来源:IE博客,下同)

Networking——负责客户端与服务器端的所有通信,包括Web内容的本地缓存。它通常受制于用户网络环境的性能。

HTML——负责解析HTML文档并创建HTML结构化数据等。

CSS——负责解析CSS并创建CSS结构化数据。

Collections——存储和访问HTML文档中的元数据,如文档头部的描述信息等。

JavaScript—— 执行JavaScript代码,它也是最为人所知的子系统。

Marshaling——因为大多数JavaScript引擎没有直接集成到浏览器中,所以浏览器和JavaScript引擎之间存 在一个通信层,这就是marshaling子系统。

Native OM——JavaScript通过DOM API与HTML文档交互,提供这些API的就是Native OM系统,能够访问和处理文档。

Formatting——负责将style应用到文档中。

Block Building——负责构建显示给用户的矩形块(CSS基于块布局),包括块尺寸等。

Layout——负责布局经过Formatting和Block Building子系统处理后的Web内容和块结构。

Rendering——负责把最终内容渲染给用户。

为了分析不同网站对浏览器子系统的各种性能影响和权重,IE性能团队选取了两种类型的网站进行实验。由于Networking子系统的性能与客户的 环境息息相关,所以不将其权重纳入评估结果中。

新闻网站

采用IE 8访问全球五大新闻网站的首页,性能结果如图2所示:

图 2. IE 8子系统针对5大新闻网站的性能结果

由图2可以看出,虽然同为新闻网站,但是由于Web开发人员对网站性能的关注和优化程度不同,IE 8子系统对5个首页的性能反馈都不一样。1号网站的主要性能消耗在JavaScript子系统上,2号网站的重头戏则是Marshaling子系统。3号 网站显然遵循了性能最佳实践经验,所以消耗时间最短;而4号网站则是反面典型,加载时间达到了3.7秒。

如果把这5大新闻网站对IE 8子系统的影响权重综合在一起,就可以得到针对新闻网站的子系统性能影响权重,如图3所示:

图 3. 新闻类网站对IE 8子系统的性能影响权重

上面这张图对于Web开发人员特别是新闻类网站工程师很有参考价值,排在前三位的子系统分别是JavaScript (29%)、Marshalling(18%)和Rendering (17%)。

AJAX网站

采用IE 8访问全球AJAX用户体验最丰富的25家网站(包括Facebook、Gmail和Hotmail等),性能结果如图4所示:

图 4. AJAX类网站对IE 8子系统的性能影响权重

与新闻类网站相比,某些子系统如HTML、CSS和JavaScript权重相对较轻,而另外一些子系统如Formatting、Layout、 Block Building和Rendering(31%)则比较重要。乍一看,这种结果可能有些意外。不过,Jason Weber分析了原因:

当JavaScript代码执行时,浏览器需要利用几乎全部子系统来配合相应的变化并最终显示给用户,而这些过程的性能消耗通常 要比执行JavaScript代码本身要昂贵得多。

Jason Weber最后指出,分析IE浏览器子系统性能权重的目的在于确保让IE 9或者更新版本在现实世界中运行速度更快。在过去几个月里,IE开发团队针对上面的性能实验结果采取了若干子系统的性能改进,包括硬 件加速渲染、编 译JavaScript和原 生内部集成JavaScript等。

对于浏览器子系统的性能权重分析具有很高的参考价值,一方面可以帮助浏览器开发人员了解现实世界对自身产品的反馈,评估各个子系统的功能优先级;一 方面能够帮助Web开发人员清楚其应用对浏览器的性能压力,采取合适的优化调整。

转载于:https://www.cnblogs.com/TylerCui/archive/2011/02/21/1959851.html

剖析IE浏览器子系统的性能权重相关推荐

  1. (1.6w字)浏览器与前端性能灵魂之问,请问你能接得住几个?(上)

    作为一个合格的前端工程师,浏览器相关的工作原理是我们进行性能优化的基石,我之前也强调过知识体系的重要性,这部分原理性的内容就是知识体系中的重要部分,必须牢牢掌握才能面对瞬息万变的实际场景,针对性地给出 ...

  2. 【Java 网络编程】服务器端 ServerSocket 配置 ( 端口复用 | 缓冲区设置 | 超时时间 | 性能权重 | 端口绑定 )

    文章目录 I ServerSocket 端口号绑定参数 II ServerSocket 复用绑定端口设置 III ServerSocket 设置缓冲区大小 IV ServerSocket 设置超时时间 ...

  3. 【Java 网络编程】客户端 Socket 配置 ( 超时时间 | 端口复用 | Nagle 算法 | 心跳包机制 | 连接关闭机制 | 缓冲区大小 | 性能权重设置 | 紧急数据设置 )

    文章目录 I 设置读取超时时间 II Socket 复用绑定端口设置 III 开启 Nagle 算法 ( 沾包 ) IV 心跳包机制 V 连接关闭处理 VI Socket 紧急数据内敛设置 VII S ...

  4. 浏览器内核和性能优化总结

    浏览器内核和性能优化总结 对于当下主流浏览器,很多人并不清楚它们内核具体是什么,有何特点:有的人编写html和CSS代码时,乱写一通,殊不知错误的写法会消耗浏览器更多的性能,导致加载变慢. 我从网上找 ...

  5. JS在浏览器上的性能分析(一)脚本的下载与运行

    JS在浏览器上的性能分析(一)脚本的下载与运行 前言 JS在浏览器上的性能,可以认为是开发者所面临的最严重的可用性问题.JS的阻塞特性使得浏览器在执行JS代码时不能同时做其他任何事情,而大多数浏览器使 ...

  6. (二)JVM成神路之剖析Java类加载子系统、双亲委派机制及线程上下文类加载器

    引言 上篇<初识Java虚拟机>文章中曾提及到:我们所编写的Java代码经过编译之后,会生成对应的class字节码文件,而在程序启动时会通过类加载子系统将这些字节码文件先装载进内存,然后再 ...

  7. 探讨浏览器CSS选择器的权重!!!

    <!DOCTYPE html> <html> <head lang="en"><meta charset="UTF-8" ...

  8. 浏览器调试工具网页性能分析中的使用

    IE.chrome.firefox等按F12可以掉出它们自带的页面调试工具,作为测试当然不能非常精通在页面上修改样式,调试页面jsp,js,但是却可以很轻松的使用它来分析网页的性能优化项. 基础篇 现 ...

  9. 浏览器原理及性能优化

    1. 影响页面性能的因素 HTTP 请求 复杂的页面逻辑 重度的DOM操作 服务端响应 大量的数据 - 2. 优化网页性能 资源压缩与合并(代码打包) 异步加载 CDN DNS 预解析 缓存 - 一. ...

最新文章

  1. 使用.udl快速测试与数据库的连接并得到连接字符串
  2. data/mysql_error_trace.inc,09-在线挑战详细攻略-《真的很简单》
  3. 复制百度文库及其他收费文档的方法
  4. Spring实战(第4版)阅读笔记(一)
  5. 单体架构常用注解合集
  6. 安装elasticsearch遇到的几个问题
  7. 25 | 业务安全体系:对比基础安全,业务安全有哪些不同?
  8. (1366, Incorrect string value: '\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...' for column '
  9. java调用腾讯企业邮箱给谷歌(gmail)邮箱发送邮件丢失或进入垃圾邮箱
  10. 微软通过云存储插件简化Docker容器迁移
  11. 农业物联网系统功能特点
  12. java数据库连接Druidsql失败_Druid数据库连接池异常connection holder is null
  13. rancher应用商店的使用
  14. 阿里云部署Django项目(nginx+uWSGI)-2018.11
  15. 实现 外网 远程桌面 连接 个人pc(开机自启动,校园网web自动验证,多用户远程桌面)
  16. 基于STM32小熊派开发智慧路灯项目实践
  17. 【Python】Python项目打包发布(一)(基于Pyinstaller打包多目录项目)
  18. 一篇博客带你熟悉Eclipse、AndroidStudio下搭建NDK环境(内有Demo)
  19. 在macOS下启用CGO_ENABLED的交叉编译Go语言项目生成Windows EXE文件
  20. 科学速读法:20分钟让你阅读速度提高3倍

热门文章

  1. 《Excel与VBA程序设计》第一章
  2. 个人计算机既pc机,个人计算机简称pc机这种计算机属于___pc机开机后计算机执行_个人计算机即pc机(14)...
  3. 基于android的智能风扇,新锡德尔对基于Android的静电式智能空气净化器系统设计...
  4. 解决git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Pleas
  5. RocketMQ 高可用性
  6. 网络知识:说说我们常听说的网络攻击是怎么回事?
  7. 电脑C盘满了怎么办?这两种方法都能解决
  8. 前端新手程序员不知道的 20个小技巧
  9. mysql gtid ha_MySQl新特性 GTID
  10. 前大灯是近光灯还是远光灯_汽修案例:长安福特翼博前大灯间歇自动点亮