云端架构下的手机浏览器内核演进(摘自程序员论坛网,作者:梁捷)

自从2011年U3内核发布之后,就有人问我:“在终端性能和网络环境都越来越好的情况下,直接用客户端中的内核去进行解析就可以了,UC何必费这么大劲儿去挑战云端架构下的浏览器内核呢?”

    其实浏览器和网络带宽之间相当于车和路的关系。路修宽了并不意味着不会塞车,修路的速度永远追不上人们买车的速度,更小巧和灵活的车永远更受欢迎。这正是我们一直在产品和技术创新上坚持“7S-3C原则”的原因。做移动应用方向上一定要重视“云”(Cloud)和“端”(Client)两种能力。具体到手机浏览器,还要打造自己的内核(Core)技术。

    手机浏览器发展到今天,逐渐形成了两大阵营。一类是以Chrome、Safari、Firefox等为代表的阵营,这些浏览器都将内核完全放在终端里,大多使用开源的WebKit内核。这类浏览器的特点是可以高度还原页面特性,能解析渲染出和电脑版浏览器上一样的效果。另一类则是以UC浏览器(U2内核)、Opera Mini等浏览器为主要代表的阵营,采用服务器客户端混合运算(云端)架构,这类浏览器的内核实际在“云”里,是通过服务器对网页数据进行实时压缩处理,然后再下发到客户端,主要特点是可以快速获取页面内容,省钱省电省时间。

云/端架构让“ You Can Web”

    2004年当我们决心做手机浏览器开发时,中国的移动互联网产业尚未启蒙。那时手机上网环境恶劣,硬件配置落后、网络带宽不足、标准繁杂不一。在很长一段时间,中国手机上网的数据传输速度基本是在10kb/s左右,主流手机的CPU最高是几百kHz不等,可用的RAM大多是几百KB,操作系统更是繁杂无比,Symbian是属于相对智能的。在这种环境下,使用旧有的设计思路进行手机软件开发异常艰难。尤其是想让手机上网,首先要解决的就是对不同协议网页的解析问题,HTML、WAP、XML、JavaScript等都需要面对。

    为了能把产品做出来,我们设计了一种新的浏览器技术架构。与单机版软件不同,这种新架构将大部分复杂的运算放在服务器上完成,这样就可以顺利地在手机上解析Web页面。现在将这种技术架构称之为UC的云/端架构。UC浏览器以前叫UCweb,就是You Can Web的意思。

    如图1所示,用户在使用UC浏览器浏览Web网页时,“云”会先将页面内容进行转码和重排。例如当页面出现JavaScript、CSS等手机端无法很好处理的元素时,服务器会采用高容错策略进行自动过滤。当页面需要显示图片时,服务器会根据终端返回的屏幕参数对图片进行匹配压缩。这样手机端需要处理的数据繁杂程度就大大降低,对标准协议的支持也提升不止一个档次。考虑到上网浏览页面的特性,所有服务器处理工作都是实时的,即:基于云端架构的手机浏览器,实际上将自己的一部分内核放在了“云”——也就是服务器里。

图1 U2内核架构

    但挑战同时而至,由于手机终端和网络服务器混合运算的手机浏览模式前所未有,对“云”的设计、管理和优化对我们而言也完全是新的世界,其开发和管理的复杂程度大大超过了之前的单机版手机浏览器。比如对于终端和云端的分布式Cookie等会话机制的维护,涉及每台服务器对于会话保存、当服务中断后可跨集群的无缝的恢复、客户端以及服务端生命周期的同步等复杂技术。再比如对于经过中转的性能的保证,要确保单台服务器的单个事务在平均响应1秒以内,包括向网站拿网页、解析、排版、图片处理、会话等复杂过程。

    现在回想起来,虽然初期的研发艰难,但正是这种当时看来很冒险的技术架构,改变了中国用户的手机上网体验,培育了中国第一批手机上网用户。后来,很多厂商实际上都采用了类似的架构做手机浏览器。

既在“云”,也在“端”

    随着3G和WiFi网络环境日益普及,我们发现原有客户端解析引擎已不足以满足用户的需求。3G网络的上网数据传输速度可以达到数百kbps。主流终端厂商新发布的手机开始使用500MHz以上的CPU,RAM也大都在300MB以上,4寸左右的触摸屏已进入主流人群的手中。人们使用手机的习惯,以及对手机功能的需求都开始发生变化。

    另一个重大变化是HTML5。HTML5一个很重要的特点是,要求浏览器能够直接支持以标签形式播放视频、音频,支持用标签形式制作动画等,这对浏览器在本地客户端的支持上提出了一个挑战。

    正是预见到了这些可能的变化,我们从2008年起组织了一个单独的团队,历时3年打造了新一代手机浏览器内核U3。U3内核将原先主要放在“云”的页面解析功能,向本地客户端做了相应迁移。

图2 U3内核架构

    如图2所示,第三代浏览器的云端架构采用了新的压缩技术——“无损云压缩引擎”,同时对页面的解析和渲染不再依靠服务器,而是依靠U3内核。与U2内核的云压缩引擎不同,无损云压缩引擎不会对页面进行转码,而只对页面中的部分可压缩元素进行处理,发送到“端”之后,U3内核再对压缩过的数据进行解包。可见通过“云”和“端”的能力增强,让使用U3内核的浏览器不仅可以对网页进行无损的完全解析,而且可以实现云端架构独有的省流量、高效等特点。在同等解析效果情况下,可以比不采用无损云压缩引擎的手机浏览器节省一半以上的流量。

    U3取这样的架构也是希望能够搭建一个开放的Web App平台。U3可以将一些手机特有的系统功能接口开放给开发者,如摄像头、话筒、传感器、位置信息等。开发者可以直接通过Web方式调用,而无需研发复杂的客户端。这样就可以绕开系统和终端差异,让开发效率更高,更新部署更简单灵活。

浏览器内核之争之我见

    在U3内核发布后,一些国内浏览器厂商也纷纷表示要打造自己的浏览器内核。而事实上,大多数手机浏览器产品都是基于WebKit做二次研发。这个问题始终让人一头雾水。

    从本质上说,WebKit是由苹果首先推动的开源内核项目,源自于KDE。2005年,苹果宣布将WebKit完全开源。目前还有Google、Nokia、RIM等正在参与和推进WebKit项目。任何人都可以在遵守其协议的情况下将WebKit拿来做二次研发。当前应用于Chrome、Safari和大多数移动设备的系统浏览器内核都是基于WebKit内核开发的。很多国内手机浏览器厂商也都是在这么做的。

    由于WebKit的存在,一个新生浏览器的“制作”流程,只需要设计好UI界面,将WebKit进行编译,就可以“做出”一个浏览器。可是仅仅将一个原生内核重新编译,就宣称自己有“自主内核”是不恰当的,这样最多只能起到一种包装作用。这些浏览器的性能仍然会受制于所使用的原生内核。

    我认为,一款浏览器产品是否拥有“核能力”,需要考察以下几个实力:跨平台能力、技术创新力、产品国际化能力和安全能力。跨平台能力是任何一款内核级产品所必须具备的能力,可以针对不同的操作系统快速发布拥有一致体验的产品。技术创新力是企业能否针对新的终端特性、用户需求做出的创新性的产品,如无损云加速、系统自适应能力、语音控制等。

    毫无疑问移动互联网是未来十年成长速度最快的行业之一,浏览器是这个行业中为数不多的平台级产品。作为一家源自中国的技术公司,我们希望能用我们的技术实力为中国的互联网公司在全球拼出一片市场。我也期望所有的浏览器公司都能多在自己内核上下功夫,打造真正的“核能力”。

作者梁捷,UC(优视科技)技术总裁。1998年毕业于华南理工大学计算机专业,耕耘于中国的电信和互联网市场,在电信及网络计算领域拥有超过10年的技术研发和管理经验。

更多相关文章
  • 摘要:看IBM大中华区总架构师 给我们解读一个程序员的职业生涯.有一些年轻的程序员向我咨询,将来的路应该怎么走?俗话说,条条大路通罗马.不同的路都能走向成功.到底选哪条路,取决于自己的兴趣.可能有程序员会问:如果还没找到自己的兴趣怎么办?我的建议是多尝试,努力做,这是职业生涯的必经之路.当你积累了一 ...
  • 目前第二款游戏处于内部测试阶段,即将上线.今天广州那边的代理商反应,在他们公司内部使用WIFI连接游戏,部分手机可以访问,部分没有办法访问游戏,一直出现卡死状态.而我们公司内部却可以访问游戏.刚开始怀疑是给他们的包出错了,还有就是他们公司内部的网络问题.压根儿就没有想到最终的结果是服务器内核参数调整 ...
  • 主流浏览器内核介绍前端开发值得了解的浏览器内核历史
    最近 "个人恶趣味" 持续发酵,突然想了解下浏览器内核的发展历史. 内核 首先得搞懂浏览器内核究竟指的是什么. 浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎.它负责取得网页的内容(HTML.XML.图 ...
  • 看到一篇比较好的文章,就想收藏下来.本测试完全是个人爱好,不对测试结果做任何商业的推测!手机上网越来越流行,而手机内置的网页浏览器不能满足各种不同的需求,因此每个人应该或已经安装一个或多个的增强浏览器来改善手机上网体验.可能吧在本文将对目前比较流行的7个款智能手机手机浏览器进行简单评测,这些浏览器包 ...
  • 全球有四大浏览器内核目前全球仅有四个独立的浏览器内核,分别为微软IE的Trident.网景最初研发后卖给Mozilla基金会并演化成火狐的Gecko.KDE的开源内核Webkit以及Opera(欧朋)的Presto.其中,Presto是历史最悠久的内核.目前微软的Trident在移动终端上主要为WP ...
  • 各主流浏览器内核介绍
            所谓的“浏览器内核”无非指的是一个浏览器最核心的部分——“Rendering Engine”,直译这个词汇叫做“渲染引擎”,不过我们也常称其为“排版引擎”.“解释引擎”.这个引擎的作用是帮助浏览器来渲染网页的内容,将页面内容和排版代码转换为用户所见的视图. 注:有时候我们所说的“浏览 ...
  • 整理查询一下,js判断手机浏览器的方法 <script type="text/javascript"> /* * 智能机浏览器版本信息:包括微信内置 * */ var browser={ versions:function(){ var u = navigator.u ...
  •  现在市面上的手机浏览器数不胜数,UC.QQ.360.Chrome.海豚.百度等都通过不同的方式占领了一定市场份额,其他的基本上无法与上述几者抗衡,毕竟完全不是一个重量级别的.究其原因,就是上述几个产品都是靠拼爹积累用户的,QQ.360你们懂的,UC跟Chrome我还是比较敬重的.在各大厂商基本将手 ...
一周排行
  • 看一下API中关于Object的介绍: 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 那么Object中到底有哪些方法,各自有什么应用呢?这个问 ...
  •  即将启程去扬州,再赋闲诗一首, <扬州即行> 魂牵风月觅去处,但求花葵潜云天...   ,不知道,海葵是否依在,花葵即可,海葵就算了!
  • 1.删除redhat原有的yum rpm -aq|grep yum|xargs rpm -e --nodep2.安装163的yum包,wget 后面的路径要根据实际情况,有可能版本已经更新,wget http://m ...
  • 从辞职创办山坡网至今,刚好半年,跌跌撞撞,终于拿到投资了!我的创业路开始第二阶段的征途. 在此记录一下其中的过程,也许对大家有个借鉴意义. 我是纯技术背景出身,从写代码入行(必然是这样,否则怎么会在博客园写文章呢?) ...
  • 转载自某博客MPLS/VPN基本原理及在ZXR10中的配置 MPLS简述MPLS(multi-protocollabelswitch)是Internet核心多层交换计算的最新发展.MPLS将转发部分的标记交换和控制部 ...
  •    对于Windows操作系统的安全模式,经常使用电脑的朋友肯定不会感到陌生,安全模式是Windows用于修复操作系统错误的专用模式,是一种不加载任何驱动的最小系统环境,用安全模式启动电脑,可以方便用户排除问题,修 ...
  • // 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3&qu ...
  • 从0开始学angularjs-笔记01
    一.angularjs简介     AngularJS 是一个为动态WEB应用设计的结构框 ...
  • 误区4:程序员不是一般人本文为清华大学出版社<Java程序员,上班那点事儿>节选.从一个做会计的女生对程序员的误解说起:那天和一个做会计的女生聊天,问她对程序员或者编程工作的看法.她搬出了一大堆词汇,立刻 ...
  • 数组$arr array (size=3) 0 => array (size=2) 'channel' => int 0 'num' => int 170 13 => array (size= ...