什么是流式传输 http stream?

505 阅读1分钟

什么是流式传输 http stream?

所谓的流式传输就是response body大小未知,数据动态的发送到前端。

即当前客户端发起的http请求时,服务端并没有在 response header 中反回具体的content-length。content-length就是response body 的大小。

普通的http请求response header里面返回content-length,客户端接收到对应的大小之后关闭请求。正确情况下后端都会一次性返回所有数据。

在http1.1中协议默认是不支持流式传输的,必须要借助在 response header 中添加Transfer-Encoding: chunked。

在http2 / 3 中协议默认就支持流式协议。也就是说你只需要满足两个点1、response body大小未知 2、 数据动态的发送到前端这就是流式传输。不再需要添加额外的字段到response header里面。

如何区分一个请求是不是流式传输?

response header里面不包含content-length

Response header 里面的Content-Type等于application/octet-stream  与内容格式无关

如果是http 1.1 response header里面有Transfer-Encoding: chunked

你可以发现http 的size 在动态发送变化

还有一些极端的做法,比如通过设置content-length来现在动态发起数据的大小。就不在讨论中了