【发布时间】:2013-12-18 13:09:49
【问题描述】:
有专家能解释一下两者的区别吗?分块是流协议而多部分不是吗?使用 multipart 有什么好处?
【问题讨论】:
-
只是一个猜测,但我希望 multipart 包含多个单独的部分,用于多个不同的内容等 - 而 chunked 为同一实体提供多个块。在等待更有知识的人回答时值得研究:)
标签: http chunked-encoding chunked http-chunked
有专家能解释一下两者的区别吗?分块是流协议而多部分不是吗?使用 multipart 有什么好处?
【问题讨论】:
标签: http chunked-encoding chunked http-chunked
更直观,
分块是一种从服务器向客户端发送单个消息的方法,服务器不必等待整个响应生成,但可以在可用时发送片段(块)。现在这发生在数据传输级别并且对客户端是无视的。恰当地说,它是一种“传输编码”类型。
而多部分发生在应用程序级别并在应用程序逻辑级别进行解释。这里服务器告诉客户端内容,即使它是一个响应体,它也有不同的逻辑部分,可以相应地解析。再次恰当地,这是客户应该知道的“Content-Type”设置。
鉴于传输可以独立于内容类型进行分块,如果需要,服务器可以使用分块编码传输多部分 http 消息。
【讨论】:
两者都不是协议。 HTTP 是协议。事实上,HTTP 中的 P 代表 Protocol。
您可以在Hypertext Transfer Protocol 1.1 下阅读更多关于chunked 和multipart 的内容
Chunked 是第 3.6 节传输编码中的传输编码。
Multipart 是第 3.7.2 节 Multipart Types 3.7 Media Types 的一个小节中的一种媒体类型。
分块还会影响协议的其他方面,例如 4.4 中指定的内容长度,因为当消息长度无法预先确定时(主要是在传递动态内容时),必须使用分块。
从 14.41 开始(Transfer-Encoding 标头字段)
Transfer-Encoding 通用标头字段指示什么(如果有) 转换类型已按顺序应用于消息正文 在发件人和收件人之间安全地传输它。这 与内容编码的不同之处在于,传输编码是一种 消息的属性,而不是实体的属性。
更简单地说,分块是传输数据块的方式,而多部分是数据的形状。
【讨论】: