Http 传输编码:分块

Http 传输编码:分块,http,tomcat,http-headers,websphere,transfer-encoding,Http,Tomcat,Http Headers,Websphere,Transfer Encoding,我试图了解更多关于传输编码:chunked。提及一些条款: 和 我还是不太清楚。我知道设置这种编码可以让服务器将块中的内容设置到浏览器中,并在使网站响应的时间内部分呈现内容 如果我有一个web应用程序,它可以在IBM WAS上提供动态内容(例如:基于JSF的web应用程序),那么大多数web页面都设计为提供丰富的静态内容,其中包含大量CSS和JS文件+动态内容。如何将页面的传输编码设置为“分块”?换句话说: 您如何决定哪个页面将具有“传输编码:分块”,以及如何为该页面设置它 您的个人经验对我

我试图了解更多关于
传输编码:chunked
。提及一些条款: 和

我还是不太清楚。我知道设置这种编码可以让服务器将块中的内容设置到浏览器中,并在使网站响应的时间内部分呈现内容

如果我有一个web应用程序,它可以在IBM WAS上提供动态内容(例如:基于JSF的web应用程序),那么大多数web页面都设计为提供丰富的静态内容,其中包含大量CSS和JS文件+动态内容。如何将页面的传输编码设置为“分块”?换句话说:

  • 您如何决定哪个页面将具有
    “传输编码:分块”
    ,以及如何为该页面设置它

您的个人经验对我的理解肯定很有价值。

传输编码:渐进式渲染不需要分块。但是,在发送第一个字节之前,如果总内容长度未知,则需要使用分块编码。

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

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

当服务器向客户机推送大量数据时,通常会使用此功能—数据量通常很大(兆/千兆)


您能否以编程方式为您的网页启用此功能?这取决于您的web服务器。通常,当您不知道数据长度就开始发送数据时,会自动使用它。“通常以千兆为单位”-应该是兆,如果有的话。;)但它甚至不一定与大小有关:它与时间有关,因此客户端可以继续处理接收到的部分,甚至在知道整个响应的确切大小之前。@webjockey,我想知道客户端是否需要将数据分块发送到服务器。似乎分块只是由服务器实现的。web浏览器按照中的规定内置了分块解码算法。我不知道web服务器是否实现了这样的算法。或者,您可以使用带有自定义边界标头名称的MultiPart/form数据,但您必须自己实现如何保存以自定义边界标头名称分隔的块形式接收的大文件