Ilya Grigorik 是谷歌“Web加速”(Make The Web Fast)团队的性能工程师、开发大使。他每天的主要工作就是琢磨怎么让Web应用速度更快,总结并推广能够提升应用性能的最佳实践。在加入Google之前,他创立了一家研究实时用户行为分析的公司PostRank。PostRank成立4年后被Google Analytics团队收购。Ilya Grigorik著有《Web性能权威指南》,另外,他还在Udacity上教授一门公开课:The Critical Rendering Path。
你是如何变成一个开发者的?你又是如何成为一位web性能工程师的?
我是先变成“搞web的人”然后才成为一位开发者的,也就是说,建造和设计网页把我一点点带到了这个领域。首先,只是学学HTML,CSS,再加上一点JavaScript,随着时间累积,我开始越来越深入地学习web相关知识,然后我又逐渐开始学习计算机科学。而剩下的,就像他们所说,已经成为了历史。
性能是一直以来让我着迷的东西,我想一部分原因在于要想谈论性能,你必须要建立一种敏锐的直觉,要知道所有的东西是如何在一起工作的——我不喜欢黑盒子,当我能用简单的词语解释这一切是如何发生的时候,我感觉到深深的满足感。
你写《Web性能权威指南》的动力和原因是什么?
当我学习web性能的时候我曾希望能有这样一本书。关于网络栈 (TCP, HTTP, 等等)的具体部件已经有很多书了,但是我无法找到一本能把所有这些部分拼合在一起,并且以讨论如何交付快速浏览器体验为背景的书:TCP是如何影响页面性能的,HTTP 1.x 的局限性在哪里,我们为什么需要HTTP 2.x,不同浏览器API (XHR, EventSource, WebSocket, 等等)之间有什么不同,诸如此类的问题。
另外,我知道在我写作的时候我能学习得最好,因为写作迫使我梳理思绪。在HPBN上工作的经历让我弄明白了很多我曾经忽视的重要细节,我可以重新学习我自认为已经理解(实际上并没有)的课题,并且学习很多新材料。我希望对于任何拿起这本书的人都是这样。
Google是HTTP2.0的积极倡导着。你认为部署HTTP 2.0的主要困难是什么?
随着更多的服务商和供应商接受了这个标准,部署HTTP/2每天都会变得更加简单。今天最大的障碍就剩下升级老旧基础设施,让它们可以接受新的协议,但是这个问题终将会被解决。这也是IETF一直以来紧密推动标准的原因:业界会藉此获得很大的利益,所有人都想要去实现一个稳定并且大家都能接受的协议。
WebRTC什么时候才能在移动设备上成熟地应用?Google计划在未来如何应用这个技术?
1B+设备上已经启用了WebRTC!我不能透露各种Google产品的具体计划,但是你肯定可以想象很多团队都在寻找能够利用这些新能力的办法。这就是说,WebRTC更让人着迷的方面并不仅仅是Google计划如何使用它,而是日常开发人员现在将如何构建和部署那些有条件出现的应用!你现在只需要用浏览器里的API来建立一个P2P会话就可以交换音频、视频,以及数据。这是web平台的重要一步!
Chrome并不是最快的浏览器,但是却有最大的市场占有率,这是为什么?这意味着速度并不是最重要的因素吗?
确实,Chrome并不是最快的,这是个bug,如果你有具体的例子,请告知我们——在crbug.com上提出bug!速度是Chrome的核心信条。
Google依靠Web,但是从某些角度来说Web也很脆弱,比如,DNS污染。Google现在在中国已经基本消失了。对于这样的情况Google会有什么对策吗?
我无法评论Google在中国的表现,但是可以肯定的是,我们有大型专业的安全团队和基础架构团队,他们唯一的工作和责任就是要确保我们的服务可以有效正确地运行。更广义地说,我认为Google的每个人对于任何能让web变得更加可靠和安全的机会都充满了兴趣——Vint
Cerf是我们的“首席互联网大使”,他在很多方面都是带头冲锋的!
在开发移动web应用的时候,不同平台不同版本的浏览器表现千差万别,再加上要考虑各种兼容方案,必然会极大影响到性能。这是否意味着原生应用仍然是主要的手段?
Web和原生平台都一直在进化:新的API和特性,bugfixes,偶发性回归,诸如此类。在此之上,我们还有各种各样的硬件,从低端单核手机到最新的有大量RAM和GPU带宽的多核设备。所以,无论你是要构造原生还是web应用,都需要依赖于这些设备。要想构建一个性能糟糕的本地应用,和构建一个糟糕的web应用一样简单。
如今Web发展的瓶颈在哪?未来又将如何?
一直以来,我对最新最好的智能电话的硬件参数和能力都感到惊喜。现在很多最新设备所携的计算能力要高于我几年前使用的笔记本电脑!所以,这同时也激发和挑战了软件的新能力:新的API,不同的处理管道,等等。因此,我们需要重新思考如何构建浏览器架构的设想,应该把什么样的能力显示给开发者。换句话说,并不是非此即彼,而是两者互相驱动,并且在未来很长一段时间内都将如此。
历史上出现了很多重要的网络应用,电子邮件,新闻组,万维网。Web似乎有着经久不衰的魅力。你能想象未来会出现一个具有和web同等影响力的网络应用吗?
预测未来是一桩危险的买卖!我能预测吗?我也想!万维网很棒,要是未来能出现一个更棒的东西挤掉web,我想很多人都愿意做这样有趣的思维试验:它是什么样的,它能做什么事,它是如何工作的,等等。网络已被证明是很有弹性的,我相信仍然有很多东西有待我们发现,在架构内仍然有很多东西可以提高……能成为这个时代的开发者感觉真的不错!
有一部叫做《硅谷》的热播美剧,故事的主人公创造了一种叫做pied piper的算法,这种算法可以减少数据传输时间,你认为这在现实中是可能的吗?
必须得承认,我并没有看这部剧,对于"pied piper"也不太熟悉。即便如此,几年前我们确实从CERN那里收到一些关于比光速更快的传输报告……只不过,经过进一步调查,这只是一根有缺陷的电缆。:)
这件事有可能吗?这个问题我只能留给物理学家。与此同时,更加现实的答案是“不可能”。