浏览器内核引擎开发工作的主要关注点
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
相关文章推荐
- 浏览器内核渲染引擎工作流程
- 工作计划与内容--UI软件开发新人关注
- 关注Game内嵌Web浏览器内核(HTML Rendering Engine)
- Linux 平台上的usb驱动开发,主要有内核驱动的开发和基于libusb的无驱设计。
- 四种主要浏览器内核简介(Trident/Gecko/webkit/Presto)
- 浏览器是怎样工作的:渲染引擎,HTML解析(连载二)
- Linus 最初开发Linux操作系统内核的主要参考书
- js执行引擎与浏览器内核分析
- 新产品开发后期的主要技术工作:质量、性能、效率和推广
- 驰骋工作流程引擎,工作流程管理系统,BPM软件,ccflow:消息机制二次开发说明
- 内存数据库内核开发工作日志(初稿)(一)
- 内存数据库内核开发 工作日志(innodb的原理,算法详细剖析)(九)
- 浏览器解释引擎(内核)
- js开发-浏览器内核
- Linux 平台上的usb驱动开发,主要有内核驱动的开发和基于libusb的无驱设计。
- 关注Game内嵌Web浏览器内核(HTML Rendering Engine)
- webkit Trident Gecko 浏览器内核引擎三分天下
- 驰骋工作流程引擎开发技术:关于退回与撤消的接受人员的工作处理.
- js执行引擎与浏览器内核分析
- 游戏程序开发的工作主要包括哪些方面