http:关于长连接和分块传输

动态生成的内容比如压缩流,动态网页<div id=”loading”></div>+js hide,事先并不知道Content-Length, 为了提高响应速度,希望一边生成一边传输,通常以关闭连接表明内容传完完毕。但是希望连接keep-alive呢?

解决办法是chunked transfer encoding,RFC规范要求如果是http/1.1,服务端和客户端都必须支持。

例子:
HTTP/1.1 200 OK\r\n
Transfer-Encoding: chunked\r\n
Trailer: checksum\r\n
\r\n
A\r\n
0123456789\r\n
0\r\n
checksum:crc\r\n

\r\n

可以看出,比如由整块传输大小10字节数据优化为分块传输:5+3+2+0,先前的Content-Length,如果是要Content-MD5, 需要先把文件内容过一遍,暂存下计算值,在重新读一遍文件,可以称作是Storage-and-Forword方式。


对于本地文件,事先就知道大小,没有必要搞这个。对于客户端实时访问hls分片文件,保持长连接也许会避免一些开销,但是hls小文件的初衷是CDN,连接怎么可能动态迁移呢?另外在wifi,3g网络,长连接更是不可能。

个人认为http/1.1默认长连接还是针对PC LAN这样的环境设计的,已经不适应当前复杂的网络环境,增加了web server的复杂性。

(我今天尝试去实现,发现对先前的代码影响太大了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值