说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

UC李云:基于Chromium的浏览器如何打造更好体验

HTML文档下载 WORD文档下载 PDF文档下载
UC浏览器电脑版正式发布2.0版,内核由Chromium32升级到Chromium35。CSDN移动采访了UC浏览器电脑版技术负责人李云,了解UC浏览器电脑版技术团队对Chromium软件架构的思考。

UC在今年4月份宣布以手机为中心,打造全新多屏战略。并同时发布了UC浏览器电脑版和UC浏览器电视版最新版。UC总裁何小鹏表示年底目标是TV浏览器行业第一,PC浏览器进入第一集团。

近日,UC浏览器电脑版正式发布2.0版,内核由Chromium32升级到Chromium35。CSDN移动采访了UC浏览器电脑版技术负责人李云,了解UC浏览器电脑版技术团队的思考。

CSDN移动你目前在团队中担任什么职务?

李云:从官方的角度,我是一名技术负责人。非官方的角度,我在团队中的工作还包含软件架构师方面的内容。


UC浏览器电脑版技术负责人李云

CSDN移动:现在团队的规模有多大?

李云:开发1.0版本时,我们的开发工程师只有18个人的样子,包括了前端、后端和客户端。我们最近开发人员的规模是30个人的样子,现在仍处于扩张时期。目前在北京和杭州两地都仍在招聘。

CSDN电脑版浏览器产品市场是一片红海,UC为什么还要推电脑版浏览器?

李云:电脑版浏览器产品市场的确是一片红海,但这并不表示市场中的产品都已完美。简单说来,从用户层面UC看到了一条巨大的“缝”,即UC手机浏览器的用户在电脑上不得不使用其他厂商的浏览器,这使得一些功能无法延伸而极大地影响产品的整体使用体验。面对各种不同的终端设备,UC相信各功能在不同屏(电脑、手机、Pad)上的无缝整合和延伸是必然趋势,这就意味着存在创新和进一步完善产品的机会。

CSDNChrome浏览器在速度等方面做得很棒,国内的双核浏览器为什么还有机会?

李云首先一点,Chrome浏览器在兼容性上不如IE,正因如此各厂商采用支持双核的形式来改善这一点。

另一点我认为与Google的战略和产品定位有关。Google的战略主要是放在Android、Chrome OS以及云服务上。对于他来说,浏览器的最大使命在于拉动互联网行业的技术发展,为公司的战略实施做技术准备。从Chrome浏览器产品的定位来看,Google致力于打造一个简约的产品,这就使得一些确实能改善用户体验的功能没有进入Google的视线之内。Chrome虽然提供扩展(extension)这一机制用于对功能进行扩充,但不少功能使用这一方式实现显得过重,体验也不大好,这就涉及对Chromium进行深度定制的问题。在我自己没有加入浏览器团队之前,我是Chrome的忠实用户,当时以为像Chrome这样的产品就足够好了,但后来发现,原来浏览器还可以更易用。不管Chrome做得如何,可以肯定的是,进一步改善用户体验的机会还是存在的。

还有另一点值得一提的是,众所周知,Google的不少服务在国内经常不稳定。这也是国内浏览器可以致力于去改善的一个点。

CSDN听起来WebKit核只是Chromium项目的一个组成部分,UC浏览器电脑版基于Chromium开源项目还有其他的好处吗?

李云:有的。Google团队在Chromium项目上包括WebKit在内做了大量的创新,可以说只要存在影响网页打开速度的瓶颈,就能看到相应的创新点。象DNS Prefetch、SPDY、QUIC、Prerender、多进程架构、PPAPI、v8 JavaScript引擎等技术内容都是很好的创新例子。加上Chromium是一个开源项目,所以很自然地会想到基于它做二次开发而吸收其优点。也正因如此,国内市场上的双核浏览器都是采用这一同样的开发模式。


CSDN为什么要快速跟进Chromium项目的发展?

李云:如果从用户层面解释的话很直接,因为Chromium每一个大版本的出现都会在性能、软件结构和安全上做优化,且会修复一些严重影响稳定性的缺陷。快速跟进意味着能让用户尽早享用到这些益处。

从技术层面解释的话有不少好处,在此列举四点。第一点是与软件的开发效率有关。由于Chromium项目的规模非常庞大,不断提升开发效率是该项目的一个永恒话题。也正因如此,Chromium团队一直致力于改善项目的编译效率问题。比如,在UC浏览器1.0采用Chromium M32(注:M是指Milestone的首字母,后面的数字指的是大版本号)内核的时代,那时我们只能用Visual Studio 2010进行编译,当我们升级到了Chromium M35之后进入UC浏览器2.0时代时,我们采用ninja这一更高效的工具完成编译。还有,现在我们全是采用gyp来实现跨平台的工程源文件管理,按Chromium团队的规划,今年年底会用更为高效的gn取代它,这样生成编译所需的工程文件的效率就更高,如果我们不能快速跟进就没有办法获得这些好处。

第二点关乎解决软件缺陷的效率。我们发现缺陷以后除了自己修复外,还会向Chromium社区报告bug,可以通过与开源社区协作的形式快速解决问题。如果内核版本不跟进的话,Chromium社区不会对老版本中的bug加以理睬,这就不能借助开源社区的力量。当然,这一好处也隐含了我们团队可以通过快速跟进而反哺开源社区。我们团队所修复的一些缺陷会通过告知解决方案或直接upstream的形式提交给Chromium开源社区。这不仅帮助社区解决了问题,更方便了我们下次内核升级,因为如果不将这些代码提交到Chromium的代码库,下次升级时合并代码就可能出现冲突点。

第三点有助于持续优化代码质量。Chromium项目的每个版本变更量都较大,其中很重要的一部分变量就是代码结构与质量在不断地改善。如果我们的设计是基于Chromium的老版本的话,当Chromium在新版本中优化过后,升级到新版本就不得不调整原始设计以适应新的技术方案。这使得团队可以一定程度上避免“技术债”高筑。

第四点好处在于,通过快速跟进有助于帮助网站的建议者在他们的网站中尽早运用上新的技术。某种程度上这也是帮助推进新技术的普及。

CSDN之前有过一些技术弯路吗?你们是怎么克服的?

李云:最大的一个弯路在于忽视Chromium的软件架构。结果使得各工程师在修改代码和增加文件时很混乱,程序的可维护性很差。这一痛苦经历让团队深刻地认识到维护清晰的软件架构是多么重要。目前整个团队在日常工作中都非常重视这一点,日常工作中对这类问题的敏感度很高。

另一个弯路在于我们的做事方法上。在进行软件功能开发时,工程师以前很容易一拿到需求就根据自己的理解立马上手开干,以至于做了不少“重新发明轮子”的事。而后来我们发现,所需实现功能依赖的不少基础模块Chromium项目中已有,于是我们在UC浏览器1.0的开发过程中不断地将“自己发明的轮”子给去除,用Chromium项目中现成的取而代之。我们现在养成的习惯是先看一看Chromium中是否存在可复用的部分,之后再干。这种做事方法表面上看起来慢了,因为要花时间去学习和研究,但长远看来利大于弊,除了通过该方法能不断加深对Chromium项目的熟悉外,这一方法还有助于内核的快速升级。

我想分享的一个弯路是软件设计的解耦方法。我们以前所采用的解耦方法一是很难规范化,二是很难与Chromium的新内核进行合并。现在的解耦方法除了规范化很简单外,使得在合并过程中对于各冲突点总是存在一个“明亮的灯塔”,让合并工作更加明了。实际上,我们所采用的解耦方法很简单,用一句话总结的话是“无论在Chromium之上是增加、调整或去除功能,我们在代码层面总是做加法”。这句话不好理解,但我也只能透露到这个层面。

CSDN要求高多少给人感觉有些空洞,能具体一点吗?

李云:高要求是多方位的,或许不能在此一一列举。对于软件产品的开发来说,只要谈“简单”的两点就可以看出团队的水准。第一,我们团队所编写的代码与Chromium开源项目的风格完全一致。第二,我们团队所实现的每一个软件模块和增加的每一个文件完全符合Chromium的架构与分层模型,彻底杜绝了模块混乱问题。业内能做到这两点的开发团队除了我们无他。我说这话还是很有底气的,因为做浏览器产品的在业内也就那些人,通过多方渠道可以完全掌握同行信息。有些团队的代码质量甚至已经差到将开发工程师逼走的境况。

浏览器是一个复杂度非常高的产品,如果仅仅停留在打磨外表与功能,却没有一个让人放心的“里子”的话,产品质量的高水准是不具可持续性的。这种不可持续性将消耗团队大量的精力,使得团队没能在优化和完善功能这二条路上走得更富质效。

CSDNUC目前主打多屏战略,那UC浏览器电脑版升级至2.0的意义和影响是什么?

李云:既然是战略那就是我们长期努力的方向,不会是一个版本的升级就完全实现了战略目标。表面上看,2.0与1.0在界面上没有大变(但细心的用户还是能看出有些效果差异的),但这个版本是为后面版本做技术储备。

技术储备体现在两大块。一是,我们通过这次大版本的升级更加充分地验证了在技术方面所采用的解耦设计方法具有很强的适应能力,为我们将来持续跟进Chromium的发展做准备。这样做的好处前面已谈及。二是,我们通过Aura化后,可以做出更炫效果的产品,同样为将来吸引更多的用户做准备。不论是怎样的战略,总是要有一定的用户量才更价值。

我认为战略是要一步一个脚印去实现的,持续地打造更高水准的工程师队伍才能让公司战略真正立得住,否则只能是口号。

关于PHP的十大误解 你中了几个? 专访西电朱虎明:异构计算硬件架构呈现百花齐放 百家争鸣 GSMA行纪:各种神器、好玩的、好看的全搜罗 大数据初创企业WibiData将Hadoop“打包”,谷歌董事长施密特两次参投 赚钱不忘环保 苹果计划为数据中心兴建太阳能发电厂 深度解析:清理烂代码 电信开放平台发布短信验证码API 创业教父Paul Graham谈创业投资趋势 挖掘Linux人才,打造Power生态系统!IBM启动“天合应用服务器定义未来挑战赛” 请不要忽略API的安全性 发布将近?苹果在多地注册“iWatch”商标 苹果聘请某时尚公司CEO为副总裁 将负责“特殊项目” 雅虎5000万美元收购视频分享应用Qwiki 创业第一年易犯的8大错误 苹果推iOS游戏手柄,掌上游戏主机格局变天? 代码审查固然伟大,那还有其他替代品吗? 怎样维护一个成功的开源项目 麻省理工专家发布新系统Ascend,专注内存访问安全缺陷 Oracle Database 12c面临的最大挑战是开源+开放的生态系统?! 浸入式数据中心:高密度计算的新前沿 2013年腾讯合作伙伴大会要点回顾 “鼠标之父”和超文本研究先驱Douglas Engelbart去世 享年88岁 Web服务器排行:Nginx超越Apache 成为全球TOP 1000网站最常用的Web Server Windows 8之父Steven Sinofsky正式离职微软 不得接受竞争者聘用 Yelp处理1.02亿/月绝对造访人次及3900万评论的省钱秘诀 可视化:图像的主题色提取算法,是不是太高端了? 不利于写出好代码的15个职场因素 GPU Saturday技术沙龙:分享异构计算新技术及应用 微软隐藏最深的秘密武器之一——Visual Studio可作为Python IDE 历时六月,Qt 5.1正式版终于面世! HTML5全硬件加速游戏引擎:Sphinx正式公测 怎样在程序里实现window下“打开方式”对话框,具体用什么类? 我下载了好多经典书籍(十几本),都不知道该从哪儿看起? 怎么处理没有用的连接文件? 问个菜问题 热烈庆祝灰毛兔参与分超过30000分~~~热情大送分~~!! (灰毛兔) 请教如何打包crystal report 7.0驱动引擎到我的安装程序中? 用open打开的页面如何RELOAD打开他的那个父页面? 谁有jet请发给我!谢谢!! 如何开发排序(用C或C++) 新手求教:请问怎么可以把含逗号(如:sa,ffd,sdf)的字符串从逗号处分开,变成独立的几个字串sa ffd sdf? 急!请问如何在程序启动时自动检测MODEM?能给出CODE最好。 如何在unix上远程安装软件 KeyPress事件处理疑问 TComboBox能不能有OnMouseDown事件??? 请教哪里有付费便宜、性能稳定、访问速度快的支持ACCESS、ASP的空间? 加载不了*.ocx控件是怎么回事? 我的CStatic上为什么不能贴位图? 主页何为佳? 偶用ultradev,在table里绑定字段,并作了重复区域的设置,但是live data 的结果总是一列纪录出现在一个单元格里,而且只有第一个单元格里有数据,其他是空的,怎么回事?//牛虻 ClassView Information file如何恢复,急,知道的朋友望告之! 500分求一好用的代理服务器,能访问www.creaders.net这样的网站(按:贴太多结不了,无法在水园发贴,烦版主转到水园) 各位高手,我的分发光了,问题还没解决。帮帮我好吗 请问什么叫专家分..怎样得到专家分,你们的专家分都有多少...有超过1000的吗 -->> sql语句中求和问题. 急急急急!!!,请教一个VB中SQL语言的问题!!! 请教关于数据代入的问题 我们公司把qq给封了,好着急啊,谁知道有什么办法?送分啊~~` 俺要怎么办? 怎样得到DBGrid 中某一单元格的Focus,因为我要处理这样的问题,在DBGrid中输入的数据如果不正确,则focus不能离开此单元格。 VB中的Byte型数据在PB中是什么类型? 动了枪的青马 在sco unix 5.05的分区问题 help! where could I download NT serve pack 6.0 那位高手知道在solaris编程中,如何在按钮上加载图片? 我怎样发布自己的servlet 怎样确定对象类图的中类? 可以帮我解决一个关于linux的问题吗? 熟悉文件操作的高手请进来坐一下。 +++++++关于MS SQL SERVER2000的注册服务器问题+++++ 考过scjp的进去看一眼 请问DTD是不是将要为XML Schema所代替???现在主要哪一个呢? XiaoFang(奇奇) 你在哪里,十分感谢,再送100分! 关于输入框中输入空字符串的判断 zork(我是一条鱼……) 说明白些呀,用http代理怎么上qq? HK的书店 求教:关于CRC校验的问题 问题:有关查询结果排序. 为什么我用的是LoadString函数而编译显示错误时显示LoadStringW函数。两个有什么区别? 请问这个错误提示是什么意思呢?谢谢! OCI中的类型转换 期末综合测试卷 金钥匙试卷 数学(青岛版) 五年级下册第一单元测试卷 是关于圆的! 问数字2的31次方和3的21次方的大小? 一个长方体容器,底面是一个边长为20厘米的正方形,放入一个土豆后水面升高了0.2分米,这个土豆的体积是多少? 小学数学试卷金钥匙五年级上册青岛版第五单元检测卷B答案平形四边形的面积是与它等底等高三角形面积的( ). 求一份小学数学四年级下的期末测试题,要求附带标准答案. 期末综合测试卷 滚瓜烂熟不求甚解囫囵吞枣呕心沥血津津有味千篇一律浮想联翩如饥似渴废寝忘食1、形容读书非常认真和投入的词语:2、形容读书不用心的词语:3、形容事勉励的词语: 已知二元一次方程2x+y=7 (1)把方程写成用x的代数式表示y的形式 (2)求出方程的正整数解 “我’的整数部分和4.8的整数部分一样,小数部分第一位数是2的3倍,第二位是最大的一位数,这个数是多少 负2的2014次方加3乘负2的2003次方是多少? 数学题目如何百度?急需知道.. 用{x}表示数x的小数部分,[x]表示x的整数部分,如,{2,3}=0,3[2,3]=2 若a+[b]=15,3 .{a}+b+7,8 则a=?b=? 小学人教版五年级下册期末语文试卷! 数学题目:0.62=()%=()折=()成(百度知道) 已知方程(k的平方-4)x的平方+(k-2)x+(k-8)y=k-7,当k=___时,方程为1元1次方程,当k=___时,方程为2元1次方程 2008五年级下册期末语文试卷人教版准一点2008年的(不许编) (填序号)李逵,绰号“黑旋风”,(a、斗浪里白条 b、毁金刚塑像 c、杀泼皮牛二),尽显粗野鲁莽; (a、大闹高唐州 b、怒杀阎婆惜 c、义夺快活林)只因疾恶如仇. 已知关于x的方程(m的平方-9)x的平方+(m+3)x-5=0当m为何值时此方程是二元一次方程?并写出二次项系数当m为何值时此方程是一元一次方程?并写出次方程的解 五年级下册期中语文试卷(人教版) 语文题填序号选择正确的解释1大言 2危言 3流言 4恶言 5戏言 6谗言 7格言 8谰言没有根据的话 ( )诬赖的话 ( )令人吃惊的话 ( )诽谤的话 ( )阴险狠毒的话 ( )随便说并不当真的话 语文句子成分练习题及答案 2x+y/2+2x-y/3=6...两元一次方程2x+y/2+2x-y/3=64(2x+y)-5(2x-y)=2两元一次方程,快, 用1、2、3、4、5这五个数字组成一些一位小数,把这些数按从小到大的顺序排列,第98用1、2、3、4、5五个数字组成一些一位小数。把这些数按从小到大的顺序排列,第98个数是几? 初中语文句子成分详解及习题 已知关于X.Y二元一次方程2X+Y=7,且方程的解都为正整数,求方程的解. 两元一次方程x+y=4的正整数解有如题. 五年级下册人教版数学指导丛书24页 负3的4次方+(负0.25)的2014次方x4的2014次方+(2分之1-3分之1)÷(6分 写出两元一次方程2m+n=5的所有正整数的解为 英语翻译No One Dares to HelpOn a recent Sunday,I was buying groceries in a supermarket when I heard the sound of a car accident.It was close but not very close,so I continued shopping.As I took a right turn on Munadhama Street,I saw a man lying o 五年级下册数学人教版第五单元测试A卷和B卷,是金钥匙测试卷,一百万火急!好的话,100积分!实在没有,不是金钥匙也行!明天就考, 期中B和第二单元B 答对了再加10! 什么是纯小数,什么是混小数? 2元1次方程的解写过程3X+2Y=5025X+35Y=1510 金钥匙五年级下第二单元达标测验(二)答案 谁知道什么是带小数?什么是纯小数? 帮解2个两元一次方程过程这个是用X代表Y 3/2x+2y=1 解是y=1/2-3/4x 请把解的过程写出写来,y=x+3 7x+5y=9 写出2元1次方程4X+Y=20的所有正整数解注意是正整数! 语文划分句子成分练习 1.我从此就看见许多陌生的先生.2.藤野先生总是挟着一叠大大小小的书.3.干事在黑板上写广告.4.这位客人直勾勾地打量着主人的脸.5.托尔斯泰透出一股才气.6. 一个小数扩大到他的100倍后,比原来多100.98,原数是多少?列算式 写出二元一次方程4x—3y=15的一组整数解;一组负整数解;一组正整数解写出每一步过程 在百度里面问了一个问题竟然不好提问提交问题的图标是灰色的, 求句子成分划分练习【英语和语文都要】附答案最好多一点求题 3*9M次方*27的27M次方=321次方,求M 请关注我今天在上的提问.在直角梯形ABCD中,AD平行于BC, 语文句子成分划分我们遇到的毕竟式好人多于坏人能说一下主语谓语宾语定语状语补语都是什么概念,通常顺序如何吗?不是“式”……是 27m次方除9m次方除3 最大两位纯小数与最小两位纯小数的和 MATLAB 如何解二元方程具体方程如下F1 =9*conj(u) + 4*u*(2*conj(u)^2 + 4*conj(v) + 6) - 9*conj(v)^2 F2 =6*v*(3*conj(u) - 3*conj(v)^2) - 25*conj(v) - 8*conj(u)^2F1 F2 表示两个的方程 (分别等于零) a是根10的整数部分,b是根5的小数部分,问a方加b方等于几 最大的一位纯小数与最小的两位纯小数的和是(),差是(),积是()商是() 如何用matlab解二元方程[x,y]=solve('1351.565-14.85*13-379.25*x-1.025*y.^2-27.25*y = 0','222.5-2.7*13-27.75*x-0.45*y.^2-2.05*x*y-0.36*13*y=0','x','y')Error using ==> solve>getEqns at 182' 1351.565-14.85*13-379.25*x-1.025*y.^2-27.25*y = 0 ' is n 八年级下册数学金钥匙1+1第28页第10题已知x/3=y/4=z/6≠0,求x+y-z/x-y+z的值 (用设K法) 最大两位纯小数比最小两位数少几 关于matlab解二元方程的问题>> [x,y]=slove('x+y=1','x-y=9')Undefined function 'slove' for input arguments of type 'char'.错在哪儿了? √10的整数部分是________,小数部分是_________ (2*10^-20)/0.02=?2乘10的-20次方 除以 0.02 得多少有那么难吗 matlab解二元方程问题,matlab解二元方程问题,求高手解答solve('x*exp(-y/(1.38*600))-176','x*exp(-y/(1.38*1073))-9600','x','y');不出结果啊,其实其中的9600应该是96000000,这样解不出来,是超区域了,还是算不出来? 苏教版六年级数学下册练习册19页第5题前面是12,旁边是20单位厘米
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn