HTTP 响应字段 Transfer-Encoding 赋值成 chunked 的作用介绍

简介: HTTP 响应字段 Transfer-Encoding 赋值成 chunked 的作用介绍

Transfer-Encoding: chunked 是 HTTP/1.1 协议中定义的一种数据传输方式。在 HTTP/1.1 之前,HTTP 协议的响应数据通常是一次性发送的,也就是说,服务器必须把所有的响应数据准备好后,一次性发送给客户端。这种方式的缺点是,如果响应数据很大,或者数据的产生需要花费一定的时间,那么服务器就需要维持一个开放的连接,等待所有数据准备就绪才能发送,这无疑会增加服务器的负担,也会让客户端长时间等待,影响用户体验。


为了解决这个问题,HTTP/1.1 引入了 chunked 传输编码方式。所谓 “chunked”,就是将数据分块(chunk)传输。服务器在发送响应头时,不再提供 Content-Length 字段(或者 Content-Length 字段的值为 0),而是使用 Transfer-Encoding: chunked 字段,告诉客户端,响应数据将以多个块(chunk)的形式发送。每个数据块包含两部分:块大小和块数据。块大小是一个十六进制的数字,表示接下来的块数据的字节长度。块数据是实际的数据内容。每个块后面都跟一个空行(CRLF)。当所有的数据发送完毕后,服务器会发送一个大小为 0 的块,表示数据传输结束。


这种方式的优点是,服务器可以边产生数据边发送,不需要等待所有数据都产生完毕。客户端也可以边接收数据边处理,不需要等待所有数据都接收完毕。这样就可以减少服务器的负担,提高数据传输的效率,改善用户体验。


举例来说,如果服务器要发送的数据是 “Hello, World!”,并且服务器决定每 5 个字符作为一个块,那么服务器发送的数据可能是这样的(每行后面的 CRLF 在这里没有显示出来):

5
Hello
2
, 
5
World
1
!
0


客户端收到这些数据后,会根据块大小读取相应的块数据,然后把所有的块数据拼接起来,得到最终的数据 “Hello, World!”。


在实际应用中,Transfer-Encoding: chunked 常常用于发送动态生成的内容,比如网页的实时更新、视频的实时流、大文件的下载等。


以上就是 Transfer-Encoding: chunked 的基本含义和用法。希望对你有所帮助。要注意,虽然 chunked 传输编码方式很有用,但是并不是所有的 HTTP 客户端和服务器都支持这种方式,特别是一些旧的或者简单的 HTTP 客户端和服务器。在使用时,需要确保两端都支持 HTTP/1.1 协议才行。

相关文章
|
9天前
Servlet 教程 之 Servlet 服务器 HTTP 响应 2
Servlet教程讲解了如何通过HttpServletResponse设置HTTP响应,包括编码URL、添加cookie、设置报头、控制缓冲区、发送错误或重定向响应。方法如encodeURL、addCookie、sendError、sendRedirect等,涉及状态码、报头、字符编码和内容长度的管理。
18 2
|
4月前
|
存储 缓存 API
HTTP 请求的响应头部字段 Cache-Control 的值为 no-store 是什么意思
HTTP 请求的响应头部字段 Cache-Control 的值为 no-store 是什么意思
70 0
|
9天前
|
XML Java 数据格式
Servlet 教程 之 Servlet 服务器 HTTP 响应 3
`Servlet`教程示例展示了如何创建一个HTTP响应,使用`@WebServlet("/Refresh")`的`Refresh`类继承`HttpServlet`。在`doGet`方法中,设置了`Refresh`头以每5秒自动刷新,并用`setContentType("text/html;charset=UTF-8")`设定内容类型。还使用`Calendar`和`SimpleDateFormat`获取并格式化当前时间显示。相应的`web.xml`配置指定了Servlet路径。当访问此Servlet时,页面将每5秒更新一次显示的系统时间。
17 4
|
10天前
|
存储 缓存
Servlet 教程 之 Servlet 服务器 HTTP 响应 1
Servlet服务器的HTTP响应包括状态行(如HTTP/1.1 200 OK)、响应头部(如Content-Type, Cache-Control)和HTML文档。关键头部有:Allow指示支持的请求方法;Cache-Control定义缓存策略;Content-Type指定MIME类型;Expires和Last-Modified管理缓存;Location用于重定向;Set-Cookie用于设置cookie。
23 8
|
21天前
|
前端开发 应用服务中间件 nginx
使用nginx-http-concat资源请求合并功能 优化网站响应
使用nginx-http-concat资源请求合并功能 优化网站响应
12 0
|
2月前
|
网络协议 网络安全 API
Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应
Qt 网络编程之美:探索 URL、HTTP、服务发现与请求响应
49 1
|
3月前
|
XML JSON 中间件
|
3月前
|
Java
【JavaEE初阶】 HTTP响应报文
【JavaEE初阶】 HTTP响应报文
|
3月前
|
数据采集 JSON Java
HttpClient:HTTP GET请求的服务器响应输出
HttpClient:HTTP GET请求的服务器响应输出
|
4月前
|
缓存 负载均衡
常见的HTTP响应状态码
常见的HTTP响应状态码
77 0