谷歌的SPDY让网页加快2倍

谷歌的一个新的应用层协议称为SPDY工作,这是旨在改善内容如何通过网络进行传输。在最初的测试中,他们已经成功地将网页载入时间加快了55%。虽然实验室的测试不是现实世界中的工作条件最好的反映,但也是一个令人鼓舞的开端,以谷歌的项目。
今天,我们想分享有关SPDY网络社区的信息,早期阶段的研究项目,这也是我们努力使上网更快的一部分。SPDY是其核心是应用在运输层协议的网络内容。它是专门为最大限度地减少通过的功能,如多路传输流,请求的优先次序和HTTP报头压缩延迟。我们开始SPDY工作在探索优化浏览器和服务器的方式沟通。今天,网络客户端和服务器的HTTP发言。HTTP是一种优雅,简单的协议,作为1996年的网络标准中走出来,一系列的实验。HTTP已经送达网络出乎意料的好。 我们希望继续在网络上的实验和优化传统的建设,以进一步支持的网站和浏览器的演变。因此,在过去数月,我们几个在这里谷歌一直在试验新的方法用于Web浏览器和服务器发言彼此在原型Web服务器和SPDY支持谷歌浏览器客户端造成。
到目前为止,我们只在实验室条件下测试SPDY。最初的结果非常令人鼓舞:当我们下载的前25对模拟的家庭网络连接的网站,我们看到了在性能显着改善-装载高达55%的速度页。仍然有很多工作需要做,以评估在真实条件下SPDY性能。但是,我们相信,我们已经达到了进入我们的小团队能够受益于积极参与,反馈和网络社会的援助。
对于那些想了解更多,希望有助于我们的实验中,我们邀请你审查通过铬谷歌集团的早期阶段的文件 ,在我们目前的代码看起来并提供反馈。
关于SPDY:一个更快的网络实验协议
内容提要
作为“让我们上网更快”的倡议,我们正在尝试替代协议,以帮助减少延迟网页的一部分。这些实验之一是SPDY,一个应用层协议 , 用于运送超过设计的最小延迟专门网页,内容。除了是该议定书的规范,我们已经开发出一种SPDY功能的谷歌浏览器和开放源代码的Web服务器。在实验室测试中,我们比较了通过HTTP和SPDY这些应用的性能,并观察到多达64个,在页面加载时间SPDY缩短55%。我们也希望与开源社区提供意见,反馈,代码和测试结果,使SPDY新一代更快的网络应用协议。
背景:网络协议和网络延迟
今天,HTTP和TCP是网络的协议。TCP是通用的,可靠的传输协议,提供保证交货,重复抑制,按顺序传送,流量控制,拥塞避免和其他运输功能。HTTP是应用层协议提供基本的请求/响应语义。虽然我们认为可能有机会 , 提高在传输层的延迟,我们最初的调查集中在应用层,HTTP协议。
不幸的是,网址是不是特别设计的延迟。此外,今天的网页传送明显不同十多年前的网页,这些改善和需求的HTTP无法时候预期的HTTP的开发。以下是HTTP的功能,最佳的一些表现:
* 单要求每个连接。由于HTTP只能提取一次(帮助人的HTTP管线资源,但仍然只是一个强制FIFO队列),500毫秒服务器延迟可防止额外要求TCP信道复用。浏览器解决此问题,通过使用多个连接。自2008年以来,大多数浏览器都终于打动了每个域从2至6连接 。
* 独家发起的请求。即使服务器知道客户需要的资源,它没有机制来通知客户端 , 而必须等待收到的来自客户端的资源要求。
* 未压缩的请求和响应头。 请求头今天的规模大小不一 , 从〜200字节超过2KB的。随着应用程序使用多个Cookie和用户代理扩展功能,一般在700-800头字节大小是常见的。如果使用调制解调器或ADSL连接,其中上行带宽较低,这个延迟可能会很大。减少在标题中的数据可直接改善序列延迟发送请求。
* 冗余头。此外,一些头被多次派出请求之间在同一通道。然而,如用户头代理,主机,并接受一般静态的,不需要重发。
* 压缩可选的数据。HTTP使用可选的数据压缩编码。内容应始终发送压缩格式。
以前的办法
SPDY不是唯一的研究来进行HTTP更快。 之所以出现主要是在运输或会话层一级的其他建议的解决方案,网络延迟:
* 流控制传输协议 (SCTP协议)一种传输层的TCP协议,以取代,它提供了多路传输流 ,流感知拥塞控制。
* SCTP协议的HTTP -一个运行在SCTP协议的HTTP。 比较多的HTTP SCTP与TCP的高延迟网络的建议描述了一项研究 , 比较了两种传输协议的性能。
* 结构流传输 (SST)的- 一项议定书 , 发明了“结构流”:轻量级,独立的流进行了一个共同的交通工具。 取代它的TCP或UDP之上运行。
* 复用器和SMUX -中期(之间的运输和应用层)层协议,提供流复用。他们提出了年前在同一时间随着HTTP/1.1。
这些建议提供了解决方案的网络的延迟一些问题,但不是全部。在HTTP的固有问题(压缩,优先级等),应该仍然是固定的,不管底层传输协议。在任何情况下,实际而言,改变交通十分困难的部署。相反,我们认为,有许多唾手可得的水果,可以通过解决在应用层的缺点变得。这种做法要求对现有基础架构造成极小的变化,(我们认为),可产生显着的性能收益。
SPDY的目标
该SPDY项目定义并实现了一个应用程序的网页,大大缩短了延迟时间层协议。高层次的SPDY目标是:
* 针对在网页加载时间减少50%。我们的初步结果已经接近这个目标(见下文)。
* 为了减少复杂性。SPDY使用与底层传输层的TCP,所以不需要对现有网络基础设施的变化。
* 为了避免任何变更必须由网站内容的作者。必须支持SPDY唯一的变化是在用户代理客户端和Web服务器应用程序。
* 汇集志同道合的探索作为解决问题的道路的潜伏期有关各方的协议。我们希望在发展这种伙伴关系的新协议与开源社区和行业专家。
一些具体的技术目标是:
* 为了让许多并发HTTP请求通过单一的运行TCP会话。
* 为了减少目前所使用的压缩的HTTP头的带宽和消除不必要的头。
* 要定义一个协议,易于实施和服务器效率。我们希望减少砍伐边缘案件和易于解析定义消息格式的HTTP的复杂性。
* 为了使SSL的底层传输协议,为更好的安全性和与现有网络基础设施的兼容性。虽然SSL并引入的延迟,我们认为,该网站的长远未来一个安全的网络连接而定。此外,SSL的使用是必要的,以确保在现有的代理通讯没有中断。
* 为了使服务器启动与客户通信和数据推到客户端只要有可能。
SPDY的设计和功能
SPDY增加的SSL之上,对多个并发,交叉流允许在一个TCP连接的会话层。
一般的HTTP GET和POST消息格式保持不变,但SPDY指定了编码,并通过线路传输数据的一个新的帧格式。
流是双向的,即可以由客户端和服务器开始。
SPDY旨在通过基本(始终启用较低的延迟)和高级(可选功能)功能。
基本特征
* 复流。因为请求是在单个通道交错的TCP的效率要高得多:更少的网络连接需要使用的,而较少,但更加密集,发出的数据包。
* 请求的优先次序。虽然无限平行流序列化解决问题,他们提出另一个问题:如果在信道带宽的限制, 客户端可能会块堵塞通道的恐惧请求。为了克服这个问题,SPDY实现要求优先事项:客户端可以请求尽可能多的项目 , 希望从服务器,并指派一名优先每个请求。这可以防止被拥挤的非关键资源时 , 优先请求之前 , 网络渠道。
* 报头压缩。SPDY压缩请求和响应HTTP头,导致较少的数据包少字节的传输。
高级功能此外,SPDY提供了一个先进的功能, 服务器发起的流。服务器发起的流可以被用于运载没有需要要求它的客户端的内容给客户端。这个选项配置的两种方式网站开发商:
* 服务器推动。与服务器的选项,推动通过X相关,内容头数据给客户SPDY实验。这头通知客户端,服务器端之前推动资源的客户端它要求。对于初始页下载(例如 , 当用户第一次访问一个网站),这可以大大增强用户体验。
* 服务器提示 。而不是自动推动资源到客户端,服务器使用的X – Subresources头建议的情况下给客户端 , 它应要求特定资源,如服务器的这些资源将需要客户事先知道。但是,服务器仍然在等待客户端发送请求的内容慢速链接。,这个选项可以减少所需的时间 , 客户需要发现它需要一个由数百毫秒资源,可用于非更好的初始页面加载。
有关技术细节,请参阅SPDY议定书草案规范 。
SPDY执行情况:我们已经建立
这是我们已经建立:
*一个高速,内存的服务器,可以为HTTP和有效的反应SPDY在TCP和SSL。我们将发布此代码作为开放源码在不久的将来。
* 一种改进的谷歌浏览器客户端可以使用TCP和SSL的HTTP或SPDY。源代码是http://src.chromium.org/viewvc/chrome/trunk/src/net/flip/。(请注意,目前使用的代码的内部代号为“跳跃”,这将改变在不久的将来。)
* 测试和基准测试的基础设施,验证网页使用高保真复制。特别是,我们确保SPDY保留原始服务器头,内容编码,网址等,我们会公布我们的测试工具,以及复制我们的结果说明在不久的将来。