【发布时间】:2020-05-01 14:40:29
【问题描述】:
如果我想配置我的个人服务器,以便根据chunk rules 设置某个请求的响应:每个服务器响应块的大小应该是多少?
例如,假设分块响应是一个长 HTML 页面或一个文件。
在这两种情况下你会如何表现?
【问题讨论】:
标签: http server httpresponse chunked-encoding
如果我想配置我的个人服务器,以便根据chunk rules 设置某个请求的响应:每个服务器响应块的大小应该是多少?
例如,假设分块响应是一个长 HTML 页面或一个文件。
在这两种情况下你会如何表现?
【问题讨论】:
标签: http server httpresponse chunked-encoding
来自RFC:
这允许传输动态生成的内容...
换句话说:当内容长度未知时需要Transfer-Encoding: chunked。
内容的长度可能大至 10Tb...但也可能小至 10 字节。没关系。夹头的大小仅取决于您用于生成它们并随后读取它们的算法。
假设您生成不同长度的消息流,每秒一个字符。在这种情况下,您可以决定向客户端发送一个字节的卡盘。这样,客户端将能够在数据到达后立即使用它。但是,如果您的客户端不需要部分消息,那么您可能应该节省带宽并在您完成生成下一条消息的那一刻发送一个块。同样,消息的大小无关紧要。可以是 2 个字符,也可以是 1000 个字符。
再想一想,Transfer-Encoding: chunked 有一些用例,其中包含已知大小的数据。但是,您的问题变得广泛而无法回答。这取决于您的客户端代码、服务器代码、网络条件、数据属性、所需的用户体验等。
如果您有任何机会从网络角度询问最佳大小,那么只需发送 整个 文件 - 这是最好的选择。并在您的服务器上支持Content-Range 而不是Transfer-Encoding: chunked。
【讨论】: