您的位置:首页 > 其它

浏览器内核引擎开发工作的主要关注点

2014-10-29 15:50 218 查看

浏览器内核引擎开发工作的主要关注点

跳转至:
导航、
搜索

目录

1
稳定性
2
性能
3
功能
4
其他因素

稳定性

对Android浏览器这种既有Java代码又有C++代码来说,稳定性意味着:

Java代码不应该有NPE(空指针异常)
C++代码不能出现内存错误,包括:

null deref
指针越界访问
重复delete、free后use、循环引用、不对齐访问 等等

在某些情况下,空指针来自于有线程安全问题的代码(存在竞争条件),这类问题无法稳定再现,必须做好设计、review、编码规范,以小心避免
空指针也有可能来自于外部模块的错误(如硬件驱动),导致某个输入不应该为空的却在某种情况下变空了

如果可能的话,对所有外部输入做仔细的校验检查!

性能

加载速度 主要考虑网络IO的优化,挖掘潜在的并行度(如Chromium引入的多线程html解析)

通过云服务器转换目标网站数据来压缩流量(称为‘云加速’?)
在某些可能的情况下,考虑先展示部分加载的数据?
js加载会阻塞html解析,css应用又可能阻塞js加载,<script>可加async,前端应用可考虑优化页面结构

渲染速度

js引擎(jsc/v8):增量GC、Trace JIT(优化最热执行路径)、类型提示(asm.js)
layout、图形引擎(compositor)等模块的进一步性能改进(总觉得chromium应该做得很好了,而且这个也有难度)

需要了解GPU的基本原理、CPU+GPU架构的内在瓶颈
Canvas/SVG的硬件加速

Tiling/滚动

视频播放*

如何保证在不稳定的3G网络下流畅播放视频?

内存占用

浏览器应做到在长时间运行(一个月?)的情况下内存占用稳定,无内存泄漏
寻找WebKit核心仍然存在的一些可以优化的数据结构

功能

如果要修改浏览器内核,如何做好源代码管理,使得rebase到更高版本的upstream后,不需要做太多工作?
修改内核以增加功能的要点:

遵循W3C规范?
熟悉通过js binding增加API的方法
webcore模块化?

有没有可能以插件(plugin/addon)的方式开发对应的功能,不需要修改内核?

ad blocker(广告拦截)
PDF.js

以user script hack-in的方式解决网站兼容性问题

其他因素

提高UI交互可用性:Accessbility、手势、语音输入、基于区域的touch事件
其他:‘夜间模式’ WebRTC WebGL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: