SPDYGoogle开发的基于传输控制协议(TCP)的应用层协议 。Google最早是在Chromium中提出的SPDY协议。目前已经被用于Google Chrome浏览器中来访问Google的SSL加密服务。

SPDY当前并不是一个标准协议,但SPDY的开发组已经开始推动SPDY成为正式标准(现为互联网草案),Google ChromeMozilla FirefoxOperaInternet Explorer均已支持SPDY协议。SPDY协议类似于HTTP,但旨在缩短网页的加载时间和提高安全性。SPDY协议通过压缩、多路复用和优先级来缩短加载时间。SPDY并不是首字母缩略字,而仅仅是"speedy"的缩写。SPDY现为Google的商标

设计

设计SPDY的目的在于降低网页的加载时间。通过优先级和多路复用,SPDY使得只需要建立一个TCP连接即可传送网页内容及图片等资源。SPDY中广泛应用了TLS加密,传输内容也均以gzipDEFLATE格式压缩(与HTTP不同,HTTP的头部并不会被压缩)。另外,除了像HTTP的网页服务器被动的等待浏览器发起请求外,SPDY的网页服务器还可以主动推送内容。

与HTTP的关系

SPDY并不用于取代HTTP,它只是修改了HTTP的请求与应答在网络上传输的方式; 这意味着只需增加一个SPDY传输层,现有的所有服务端应用均不用做任何修改。 当使用SPDY的方式传输,HTTP请求会被处理、标记简化和压缩。比如,每一个SPDY端点会持续跟踪每一个在之前的请求中已经发送的HTTP报文头 部,从而避免重复发送还未改变的头部。而还未发送的报文的数据部分将在被压缩后被发送。

浏览器支持

Google ChromeChromium已经支持SPDY.

Mozilla Firefox自11.0开始内嵌支持SPDY,但默认并不使用。从Firefox 13开始默认开启对SPDY的支持。

Opera从12.10开始支持SPDY.

IE将在IE11开始支持SPDY。

以上来自维基百科  http://zh.wikipedia.org/wiki/SPDY

DEMO

以下是DEMO页面

服务基于nodejs

nodejs 安装命令:

npm install spdy

github 地址: https://github.com/indutny/node-spdy

下载github包,然后解压,example里面有hello_world,我把app.js修改了下

如下

 var fs = require('fs'),
spdy = require('../../');
var Buffer = require('buffer').Buffer; var options = {
key: fs.readFileSync('keys/spdy-key.pem'),
cert: fs.readFileSync('keys/spdy-cert.pem'),
ca: fs.readFileSync('keys/spdy-csr.pem')
}; var big = new Buffer(16 * 1024);
for (var i = 0; i < big.length; i++) {
big[i] = '0'.charCodeAt(0) + (i % 10);
} var server = spdy.createServer(options, function(req, res) {
if (req.url !== '/') {
res.writeHead(404);
res.end();
return;
} res.push('/' + Math.random() + '.txt', {
'Content-Type': 'text/plain'
}, function(err, stream) {
console.log('Push start');
if (err)
return console.error(err);
stream.on('error', function(err) {
console.error('Push error', err);
});
stream.write(big, function() {
console.error('Push done');
});
stream.end();
});
res.writeHead(200, {
"Content-Type": "text/plain"
});
res.end('ok good');
}); server.listen(3232, function() {
var addr = this.address();
console.log('Server is listening on %s:%d', 'localhost', addr.port);
});

运行 浏览器敲入  https://localhost:3232/

firefox下打开网络请求,如下

SPDY以及示例-LMLPHP

SPDY以及示例-LMLPHP

05-11 11:19