Chromium
志_祥
C/C++/Java高级程序员,系统架构师,WebKit专家,目前从事Chromium-Android内核开发。
展开
-
最近在chromium内核上修改完成的“内核离线缓存”功能
实现规范:(1)当浏览器parser模块解析main document html时,如果看到标签,则强制缓存此url web应用到diskcache(忽略服务器端设置的任何no-cache no-store expires等干扰缓存的响应头部)(2)默认加载行为(load_flag)打开LOAD_FROM_CACHE_IF_OFFLINE(M43版本上有,M50版本上似乎名字没了),如果n原创 2016-03-30 15:21:07 · 1869 阅读 · 0 评论 -
基于DevTools协议+Chromium headless的客户端爬虫框架
之前的做法是使用PhantomJS以及一个html+嵌套iframe包含目标网站URL+跨域dom操作的简单性能优化。PhantomJS实现下面的核心需求:(1)无头模式,然而PhantomJS内核基于老版本的QtWebKit,与最新版本的Chromium代码相比,版本太老了,很多特性用不了(虽然目前国内网站应该也还没开始用上这些?比如ServiceWorker、CSS Custo原创 2016-05-08 16:08:04 · 6231 阅读 · 0 评论 -
Chromium的当前net/disk_cache/simple file模块没有实现缓存的原子更新
问题:当服务器端初始响应浏览器的HTTP GET请求并设置Date头部字段,浏览器缓存了cache的第一个版本;其后下一次请求revalidate时,浏览器设置If-Modified-Since,并期望得到一个304。不幸的是,浏览器却返回了200,并重新发回完整的response body响应。这种情况下,Chromium的net/disk_cache/simple file模块将尝试更新cac原创 2016-06-20 12:58:29 · 1048 阅读 · 0 评论 -
HTML5页面渲染性能的”程序转换“思路
做浏览器内核引擎的,一般都会考虑怎么做性能优化,这个优化实际上包括下面的内容:(1)内存占用的优化,特别是对于嵌入式设备尤其重要,chromium有个blimp thin client的模块,不知道有没有用处;(2)渲染性能的提高,注意核心就是尽量利用硬件GPU来做渲染,避免CPU计算和内存Copy的开销(3)网络IO性能的提高,改善页面加载、响应数据,乃至云加速压缩流量、广告过滤屏蔽原创 2016-06-22 20:43:32 · 1320 阅读 · 0 评论 -
实现一个Web内容片段收集引擎的设想
实现一个Web内容片段收集引擎的设想现在许多Web内容都不是开放提供的,而是由封闭的社交系统分享的。自动的浏览器爬虫通常爬取这些内容会遇到技术性困难(反爬虫),或者是robots.txt策略阻止。解决这个问题的思路就是引入人工协作式交互:封闭系统的授权用户可以选取这些封闭Web页面内容中的真正有价值的片段,然后将之复制收藏到另外一个系统(数据库)中。We原创 2016-10-18 13:28:44 · 600 阅读 · 0 评论 -
分布式的future用于分布式系统环境下的自动测试?
分布式的future用于分布式系统环境下的自动测试?这要求代码可以远程注入到一个执行context,同时能够以触发事件的方式驱动系统的交互行为现在,假设要在主ui线程中注入一段测试。不能直接写成一个for循环,因为可能导致anr。必须改成cps风格,数组测试数据就变成一个链表。cps测试数据可以抽取成一个服务,每次请求当前的一个case及期待的结果验证,同时还需要指向下一个原创 2016-12-02 17:30:47 · 802 阅读 · 0 评论 -
Google V8解释器(代号Ignition)设计文档的阅读感想
Google V8解释器(代号Ignition)设计文档的阅读感想https://docs.google.com/document/d/11T2CRex9hXxoJwbYqVQ32yIPMh0uouUZLdyrtmMoL44/edit?ts=56f27d9d#1、字节码使用了x86的变长设计,可以前缀扩展到最多4个字节,以支持宽操作数?2、对于属性访问,所谓的TypeFee原创 2017-02-25 16:03:15 · 2237 阅读 · 0 评论 -
高性能虚拟机解释器:DTC vs ITC(Indirect-Threaded Code)
最近重新看Google Chromium讲Ignition的一个ppt,最后提及JSC是Direct-threaded dispatch,而v8属于Indirect-threaded dispatch。Contemporary JavaScript EnginesJavaScriptCore (Apple)● Direct threaded (== bigger code an原创 2017-08-08 10:42:21 · 1111 阅读 · 0 评论 -
简明扼要地谈谈v8的隐藏类和Inline Cache(內联缓存)
还有一个是从AST直接生成机器码,但是这个现在已经被换成了Ignition(解释器)+TurboFan(类型优化编译器)的架构了。先说隐藏类:对一个JS对象的属性访问而言,最简单的解释器实现会把属性建模为运行时的hash查询。然而这个性能太慢,怎么优化呢?简单的说就是参考静态编译器的思路,把属性field的按名字访问,抹掉名字信息,变成按offset访问。——不过这样就需要一个clas原创 2017-08-13 23:17:03 · 2545 阅读 · 0 评论