54

我试图了解更多关于Transfer-Encoding:chunked. 参考了一些文章:http: //zoompf.com/blog/2012/05/too-chunky​​PHP 中的“Transfer-Encoding: chunked”标头

我仍然没有得到非常清晰的图像。我了解设置此编码允许服务器将内容设置为浏览器的块,并导致一次部分呈现内容,使网站响应。

如果我有一个提供托管在 IBM WAS 上的动态内容的 Web 应用程序(例如:基于 JSF 的 Web 应用程序),那么大多数 Web 页面都旨在为包含大量 CSS 和 JS 文件 + 动态内容的丰富静态内容提供服务器。如何为我的页面设置传输编码“分块”?或者换句话说:

  • 您如何决定将有哪个页面'Transfer-Encoding: chunked'以及如何为该页面设置它?

您的亲身经历对我的理解肯定很有价值。

4

2 回答 2

47

Transfer-Encoding: chunked渐进式渲染不需要。但是,当在发送第一个字节之前总内容长度未知时,需要它。

于 2013-11-11T14:21:31.680 回答
7

当服务器需要发送大量数据时,服务器会使用分块编码,因为它并不确切知道数据将有多大(长度)。在 HTTP 术语中,当服务器发送响应时,服务器会省略 Content-Length 标头。相反,服务器以十六进制格式写入当前块的长度,然后是 \r\n,然后是块,然后是 \r\n(内容以十六进制的块大小开头,然后是块)

此功能可用于渐进式渲染;但是服务器需要尽可能多地刷新数据,以便客户端可以逐步呈现内容(在 html、css 等情况下)

当服务器向客户端大量推送数据时通常使用此功能 - 通常是大尺寸(mega/giga)

Mozilla 文档

于 2017-07-13T16:52:06.397 回答