Opera 实验室版: 支持 SPDY 协议

多年来人们依赖 TCP 和 HTTP 协议的结合来处理数据通讯的请求和接收,并把相应产生的数据包传输到特定的地方。但是它们并不完美。相比于人们设计这些协议的时候,现在的网站已经变得庞大得多也复杂得多。HTTP 在网络延迟方面的问题尤其突出,因为:

  • 同一时间一个连接只能索取一个单一资源
  • 只有客户端能在 HTTP 协议下发起请求
  • 请求和响应头不经过压缩,体积可以变得相当大。另外,很多请求和响应头的传输是多余的
  • 经过 HTTP 传输的数据并不总是经过压缩

总之,目前的网络没有发挥出本应达到的速度,随着网站越来越庞大和复杂,这个问题将会显得越来越严重。为了缓解这个问题,Google Chromium 团队发展出一个新的网络协议,此协议可以减小延迟和加速网页载入。这就是 SPDY,Google 已经将其用于自家的大部分服务中(Twitter其他若干网站也已经在使用),使加载速度大大提升,如果你使用的浏览器支持 SPDY 的话。

好消息是 Opera 也已经努力实现对 SPDY 的支持,完成后 Opera 也可以利用 SPDY 提升性能。其他好处,包括对 Google 的服务、其他使用了 SPDY 的网站和应用的兼容性会有所改善,并允许开发者在 Opera 中测试自己的依赖 SPDY 的服务。

关于 SPDY 的更多信息

SPDY 并不完全取代 HTTP 和 TCP —— 它基于这些协议并拓展了它们。不过 SPDY 有很多优点,例如每个连接索取多个资源、更高效的连接管理和数据格式。

SPDY 不强制压缩数据,但是它要求用户代理 (User-agent) 必须支持 gzip 压缩。不管用户代理发送的 Accept-Encoding header 如何,服务器总会以 gzip 或者 deflate 对内容编码并发送。

目前网络上有两个版本的 SPDY 在部署并使用:spdy/2spdy/3。两者都可能被 Google 所有服务(使用加密连接)和 Twitter 使用(由客户端判断使用哪个版本)。这个判断是由 NPN 协议 在 SSL 握手期间决定。当然客户端也可以决定绕过 SSL 而使用普通 HTTP。

Google 准备好了一个 SPDY module for Apache 2.2,任何人可以在他们自己的基于 Apache 的服务器上部署和使用 SPDY 来构建网站和应用。

下载 Opera SPDY build

关于 Opera 对 SPDY 的支持现状的说明

Opera 目前对 SPDY 的实现支持 spdy/2 和 spdy/3 协议的所有特性,以下除外:

  • PUSH and HINT: 就我们所知,目前网络上没有部署和使用 PUSH and HINT,并且无法在 mod_spdy 中使用,所以我们决定目前不实现它,直到我们须要在其上测试一些东西,或者有更多实际用法的时候。
  • Alternate-Protocol header: Chrome 和 Firefox 都没有按照 SPDY 草案 2 所描述的方式实现它,而且 SPDY 草案 3 甚至没有再提过它,所以我们决定不支持。
  • Persisting SETTINGS values: 服务器可以要求客户端保留它所接收的部分连接设置。在此情况下,客户端应该记住这些设置,然后在将来所有连接中使用(用户也应该能按照自己的意愿清除这些设置)。这不是 SPDY 协议的重要特性,SPDY 没有它也运作良好,不过我们将来可能会实现它。

它有多快?

我们粗略构建了一个性能测试,在 Windows 上有 50 毫秒的延迟,测试结果显示,在网络层上 SPDY 对比普通 HTTPS 有 38.67% 的性能提升。一个很不错的开始。

Google 也有提供一些 SPDY 性能测试结果

如何知道 Opera 在使用 SPDY?

是否在使用 SPDY 协议对用户是完全隐形的。没有形如 spdy:// 的附加方案,也没有什么指示标识会说 “注意!该页面使用 SPDY!”。Firefox 和 Chrome 有相关标识扩展,等我们造出相关的必要 API 之后 Opera 也应该会有相应的扩展。

辨别 SPDY 网站的一个方法是看由 SPDY 加载的附加 header,Opera Dragonfly 就可以查询得到。spdy/2 附加 header 形如 method, scheme, url and version。spdy/3 附加 header 形如 :method, :scheme, :host, :path and :version

总结

SPDY 是相当有用的新协议,比起旧的 HTTP/HTTPS,它已经展示出显著的性能提升。请在原文下提交对 Opera 的实验性 SPDY 版本的反馈,或者用 bug wizard 提交 bug。

SPDY 的更多信息包括 Google 的性能测试结果,可以在 Chromium Team SPDY Whitepaper 找到。

[ Via Dev.OperaOpera.IM 编译 ]

6条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注