左边是普通 HTTPS 加载,右边是 SPDY 加载。SPDY 是 Google 开发的基于传输控制协议 (TCP) 的应用层协议,旨在通过压缩、多路复用和优先级来缩短网页的加载时间和提高安全性。SPDY 协议只是在性能上对 HTTP 做了很大的优化,其核心思想是尽量减少连接个数,而对于 HTTP 的语义并没有做太大的修改。具体来说是,SPDY 使用了 HTTP 的方法和页眉,但是删除了一些头并重写了 HTTP 中管理连接和数据转移格式的部分,所以基本上是兼容 HTTP 的。

Google 在 SPDY 白皮书里表示要向协议栈下面渗透并替换掉传输层协议(TCP),但是因为这样无论是部署起来还是实现起来暂时相当困难,因此 Google 准备先对应用层协议 HTTP 进行改进,先在 SSL 之上增加一个会话层来实现 SPDY 协议,而 HTTP 的 GET 和 POST 消息格式保持不变,即现有的所有服务端应用均不用做任何修改。

距离万维网之父蒂姆·伯纳斯-李发明并推动 HTTP 成为如今互联网最流行的协议已经过去十几年了(现用 HTTP 1.1 规范也停滞了 13 年了),随着现在 WEB 技术的飞速发展尤其是 HTML5 的不断演进,包括 WebSockets 协议的出现以及当前网络环境的改变、传输内容的变化,当初的 HTTP 规范已经逐渐无法满足人们的需要了,HTTP 需要进一步发展。因此 HTTPbis 工作组已经被组建并被授权考虑 HTTP 2.0 ,希望能解决掉目前 HTTP 所带来的诸多限制。而 SPDY 正是 Google 在 HTTP 即将从 1.1 跨越到 2.0 之际推出的试图成为下一代互联网通信的协议,长期以来一直被认为是 HTTP 2.0 唯一可行选择。

SPDY协议的优点有:

1. 多路复用 请求优化

2. 支持服务器推送技术

3. SPDY 压缩了 HTTP 头

4. 强制使用 SSL 传输协议

SPDY协议的核心理念是构建在可靠传输层(如TCP)之上,它提供了一种通用的帧封装机制,支持多路复用、优先级处理以及数据压缩,以提高在Web浏览环境中的通信效率 。

SPDY协议的优势在于它能够显著提升Web应用的性能表现。首先,它引入了多路复用技术,允许在一个TCP连接上同时发送多个HTTP请求,这样就避免了为每个资源建立新的TCP连接,从而减少了延迟和网络拥塞。其次,它支持服务器推送技术,即服务器可以在客户端请求之前将一些资源(如CSS、JavaScript等)推送给客户端,这样可以加快页面加载速度。最后,它还支持请求优先级和头部压缩等功能,这些功能可以进一步提高Web应用的性能表现 。

SPDY 的实现需要浏览器客户端和 Web 服务器同时支持。在客户端浏览器方面,Google 自家的 Chrome 和 Chromium 全系列已经支持 SPDY;Mozilla 家的 Firefox 自 Firefox 13 也默认开启对 SPDY 的支持。亚马逊家的 Silk 利用 SPDY 的深度其实不比 Google 自家的 Chrome 和 Firefox 差。

在 Web 服务器方面,包括最流行和最广泛的 Apache 在内,Netty、Jeety、Varnish、Erlang 和 Hightide 应用服务器以及面向 node.js 的服务器也都已经宣布支持 SPDY(Nginx 也表示将支持 SPDY)。

部署 SPDY 的方法如下:

近日,Google 正式发布了适用于最流行 Web 服务器 Apache 的插件 mod_spdy。将其下载安装后,你的 Apache 服务器就能使用 SPDY 协议与兼容 SPDY 协议的浏览器如 Chrome、FireFox 等进行通信。需要注意的是,SPDY 是运行在 HTTPS 上,非 HTTPS 流量并不会受到 mod_spdy 影响。

SPDY 部署要求:

1. Apache 2.2 (≥2.2.4)

2. mod_ssl 模块开启

SPDY 部署步骤:

1. 下载 mod_spdy 模块:到下载页面下载对应系统的安装包。

2. 安装 mod_spdy 模块:在系统终端运行以下命令行:

- Debian/Ubuntu:

```bash

dpkg -i mod-spdy-*.deb

apt-get -f install

```

- CentOS/Fedora:

```bash

yum install at (if you do not already have 'at' installed)

rpm -U mod-spdy-*.rpm

```

3. 重启服务器(Apache):

```bash

sudo /etc/init.d/apache2 restart (Debian/Ubuntu)

```

4. 确定开启与否。

以下是重构后的内容:

打开 Chrome 浏览器,输入并访问 chrome://net-internals/#spdy 页面。在页面上查看主机名称是否出现在标识栏中。如果出现,说明部署已经完成;如果没有出现,请查询服务器错误日志(error.log)。

未来的 Web 基础?

最新的协议文档显示,Google 重新将 SPDY 分为两层,其中一层被描述为 HTTP-like,并有取代 HTTP 的意图。Google 在最近一篇文章中直接称 SPDY 为“a replacement for HTTP”。此外,HTTP 2.0 标准制定工作组(HTTPbis)也表示,SPDY 有望接替当前的 HTTP 传输实现。

考虑到 Chrome 和安卓的市场份额以及标准的推动,可以预见 SPDY 将会有一个光明的未来。因此,选择在这个时刻支持 SPDY 是明智的决定。