前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【专业技术第四讲】如何检测浏览器的快慢?

【专业技术第四讲】如何检测浏览器的快慢?

作者头像
程序员互动联盟
发布2018-03-15 11:47:36
6720
发布2018-03-15 11:47:36
举报
文章被收录于专栏:程序员互动联盟
现在做浏览器的大概有下面几个方向吧

1. 从事浏览器外壳的工作,开发基于浏览器的各种应用和扩展;

2. 做浏览器内核优化的,大概又分为几个部分:

a. 渲染模块优化;

b. Webgl硬件加速优化;

c. 符合ECMAScript5.1 规范的JS引擎的优化;

d. 针对特定的行业进行优化,比如游戏,社区,社交等;

e. 现在andriod很火,专门针对andriod的webkit和chromium的优化;

3. 基于浏览器的内核开发相关的产品;比如CEF3,Node-webkit等,目前主要是进行桌面端产品的开发;

4. 浏览器安全方面,好像没发现有什么公司对外招人;

5. 浏览器的基本移植和定制;目前来看这个很难有好的发展;

6. 浏览器游戏引擎开发与优化,感觉主要是webgl的优化;

那么浏览器内核的优化怎么入手呢?我们先来看下页面的加载显示过程:

  1. 用户发出指令,需要加载某个页面;
  2. FrameLoader开始调用loader模块进行数据的加载;进而调用网络模块进行主资源下载;
  3. 主资源的编码以及编码转换;
  4. 主资源数据的解析;
  5. 主页面中涉及的外部的子资源的加载以及对解析的影响:a> js文件是否暂停主资源的解析;b> css文件是否暂停主页面的解析策略; c>其它资源文件,比如字体库图片等;
  6. 子资源的解析和缓存memorycache;
  7. js代码的解析;
  8. 解析的过程中遇到主资源解析暂停的情况下,虚拟继续解析主资源进行子资源的预加载;
  9. 插件的加载与解析;
  10. Dom树的构建以及Render 树的构建;
  11. 对Box模型进行定位的layout过程;
  12. 页面的绘制过程,包括通过无效区域的标记、共享内存,cpu与gpu的协同分工等。
  13. 用户下一次行为的预测以及预测页面的与解析等;
  14. DNS的缓存以及预解析;
  15. 等待用户的下一次指令或者别的事件通知;

其实从上面列出的一个完整的过程可以看出,在数据记载过程中,可以充分考虑并发性,同时采用线程池的方式来避免线程的创建和销毁的开销.

在数据的解析过程中,可以考虑利用解析顺序的限制来做一些预解析和预加载的事情,在对数据的编码处理过程中,可以考虑编解码的效率;

在对页面的布局过程中,可以考虑layout算法的优化,比如dirty bit,dirty area的方式.

在对图形绘制的过程中,可以考虑采用GPU的方式;在插件处理方面,考虑采用PPAPI机制来替换NPAPI机制;这些过程有些是可以并行处理的,考虑不同阶段采用单独的线程的模式来提高效率,现在的cpu基本上是多核的.

以上这些都存在对内存的以依赖,那么可以考虑对内存管理模块的优化;对于系统来说,I/O的效率相对其他来说很有可能会是瓶颈,那么可以设法减少I/O的读写,采用共享内存、利用缓存的方式来优化;

对css3的的动画以及一些绚丽的UI等进行优化,包括算法和硬件加速方面,对于视频来说,同样采用硬件加速的方式来优化,对于指令系统来说,可以把某些关键的模块针对不同的指令系统来进行优化;

也可以对用户的行为分析了解到,用户用的比较多的功能是前进后退,那么可以考虑pagecache方式的优化;

对于页面来说,可以通过建立浏览器服务器端的方式来减少客户端的工作,比如比较流行的页面在服务端的缓存,资源的压缩,资源的转码,甚至是页面针对不同分辨率的设备的重新布局等;

对于开发者来说,可以吸收同类内核的一些优雅实现方式来优化;

上面说的都是性能的问题,那么接下来看看稳定性方面。

浏览器的支持的方式:

1. 多页面、插件:稳定吗,主要就是减少依赖性,那么就采用多进程的方式;

2. 本地能力的访问;本地能力往往具备很大的破坏性,比如文件操作等,因此采用某种策略对本地能力的访问加以控制,那么NACL就是不错的选择;

对于一个基于开源项目的产品来说:

  1. 在利用开源带来的优点的同时也要考虑开源项目的缺点:不稳定性,对于跟新比较快的项目,如何选择代码同步的策略和自家代码的合并方式也很重要。

2. 简化浏览器的界面,在UI方面对用户的行为做出适当的引导,减少用户的稀有操作,从而降低奔溃率;

3. 从目前chromium的发展来看,把chromium当成从桌面系统和web系统的过度了,免得直接上chromium os让大家接受不了。说白了以后浏览器就是一个平台了,所有的应用就在这个平台上运行到了,从UC+,轻应用的发展来看也可以看出一二。那么开发者就不得不重视这套应用的运行机制和扩展机制了。

4. 通过沙箱模型我们也可以延生来看,浏览器在兼容传统的客户端时是否也可以建立一套沙箱模型呢?这个对于有历史包袱的企业来说很有参考意义。看了下360比较早的实现了。

转自:http://blog.csdn.net/talking12391239/article/details/21463703

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档