分块编码(Transfer-Encoding: chunked)VS Content-length

参考链接: 

HTTP 协议中的 Transfer-Encoding

分块传输编码

 

https://www.cnblogs.com/xuehaoyue/p/6639029.html

   

一、背景: 

  1. 持续连接的问题:对于非持续连接,浏览器可以通过连接是否关闭来界定请求或响应实体的边界;而对于持续连接,这种方法显然不奏效。有时,尽管我已经发送完所有数据,但浏览器并不知道这一点,它无法得知这个打开的连接上是否还会有新数据进来,只能傻傻地等了。
  2. 用Content-length解决:计算实体长度,并通过头部告诉对方。浏览器可以通过 Content-Length 的长度信息,判断出响应实体已结束
  3. Content-length引入的新问题:由于 Content-Length 字段必须真实反映实体长度,但是对于动态生成的内容来说,在内容创建完之前,长度是不可知的。这时候要想准确获取长度,只能开一个足够大的 buffer,等内容全部生成好再计算。但这样做一方面需要更大的内存开销,另一方面也会让客户端等更久。
  4. 我们需要一个新的机制:不依赖头部的长度信息,也能知道实体的边界——分块编码(Transfer-Encoding: chunked)

   

二、分块编码(Transfer-Encoding: chunked) 

    1. Transfer-Encoding,是一个 HTTP 头部字段(响应头域),字面意思是「传输编码」。最新的 HTTP 规范里,只定义了一种编码传输:分块编码(chunked)。
    2. 分块传输编码(Chunked transfer encoding)是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由网页服务器发送给客户端的数据可以分成多个部分。分块传输编码只在HTTP协议1.1版本(HTTP/1.1)中提供。
    3. 数据分解成一系列数据块,并以一个或多个块发送,这样服务器可以发送数据而不需要预先知道发送内容的总大小。 
    4. 具体方法
      1. 在头部加入 Transfer-Encoding: chunked 之后,就代表这个报文采用了分块编码。这时,报文中的实体需要改为用一系列分块来传输。
      2. 每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的 CRLF(\r\n),也不包括分块数据结尾的 CRLF。
      3. 最后一个分块长度值必须为 0,对应的分块数据没有内容,表示实体结束。
    5. 例:

      HTTP/1.1 200 OK
      Content-Type: text/plain
      Transfer-Encoding: chunked

         

      25\r\n
      This is the data in the first chunk\r\n

         

      1C\r\n
      and this is the second one\r\n

         

      3\r\n

      con\r\n

         

      8\r\n
      sequence\r\n

         

      0\r\n

      \r\n

         

    6. Content-Encoding 和 Transfer-Encoding 二者经常会结合来用,其实就是针对 Transfer-Encoding 的分块再进行 Content-Encoding压缩。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

200t不稳定_技术革新!将不可能变为可能 这家企业是怎么做到的?

据水泥人网了解,每年的第四季度是整个水泥行业的高峰期,尤其是北方地区各大水泥集团都将会进入错峰停产和检修期,烧成技术改造往往是水泥企业技改过程最为重要的环节,如何做好烧成技术改造成为水泥企业必须要面对的问题。针对目前…

关于update set from where

关于update set from where 下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id,name 1 王 2 李 3 张 表b&#x…

取消计算机触摸板,笔记本电脑触摸板如何打开和关闭

笔记本电脑触摸板怎么打开和关闭?现在用笔记本的用户都越来越多了,现在也有人把笔记本当电视使了。就是电视上看得到用笔记本联网也是能看到,电视看不到的笔记本电脑也能看到。但是笔记本上面有一个触摸板,现相信大家都用过。可是…

List数据多重规则排序

List集合进行排序时,很多人会考虑 冒泡、快速等排序算法,但是对于多重排序规则的话,算法就不太适用了。其实java.util.Collections已经提供了 sort的排序方法,并且能自己实现其排序规则。现在有个场景:我需要对一批优惠…

QQ显示服务器繁忙2013,在QQ空间发表日志的之后为什么样总是显示“服务器繁忙”?...

据小米方面介绍,小米手机认证空间帐号自2013年5月21日开通以来,框架,8mm加厚钢化玻璃,15mm防火板材质机壳3、在QQ空间发表日志的之后为什么总是显示“服务器繁忙”,发表不了日志?这个难题在我家电脑下终于存…

http sxyk.cdn_Discuz x3 开启cdn和https后链接修改教程

Discuz x3 开启cdn和https后链接修改教程开启支持https主要需要修改一下几个地方1. 、查找修改文件discuz_application.PHP :source/class/discuz/discuz_application.php (约第 187 行处): 查找:$_G[isHTTPS] ($_SERVER[HTTPS] && …

8.4. su - root

add a user to wheel group rootfreebsd:~ # pw usermod neo -G wheel rootfreebsd:~ # id neo uid1001(neo) gid1001(neo) groups1001(neo),0(wheel)freebsd# grep wheel /etc/group wheel:*:0:root,neo原文出处:Netkiller 系列 手札 本文作者:陈景峯 转…

oracle更改编码

背景:win764bit英文操作系统(支持中文)   oracle11G默认安装   从ZHS16GBK字符集导入数据库表现:plsql显示为乱码解决:1、查看并更改数据库的编码为ZHS16GBK $sqlplus system/oracleSQL> select * from v$nls…

she is so css什么意思,输入she is so什么意思 微信she is so什么梗

最近很多人都在微信玩she is so的小游戏,会出现很多不同的形容词很有趣,适合好友之间一起玩。而不少人也不明白输入she is so是什么意思?该怎么玩呢?下文具体介绍。微信输入she is so是什么意思在微信聊天对话框中输入she /he is …

transformer论文解读_【论文解读】ICLR2020 | 深度自适应Transformer

作者 | kaiyuan 整理 | NewBeeNLP一篇来自ICLR2020,facebook人工智能实验室的论文,关于改进Transformer推理速度的。论文地址:https://arxiv.org/abs/1910.10073写在前面大模型在困难任务上表现非常好,而小模型也可以在比较简单…

vs2017下开发C++MFC动态库实现

2019独角兽企业重金招聘Python工程师标准>>> 今天无意间浏览了一些关于vs2017新功能的介绍,特别是微软发部了Visual Studio Installer,这个集成安装工具简约的操作风格,丰富vs开发内容,真正打通了开发的“最后一公里”…

hadoop为什么出现

在很多领域里面,在现在这个时代下面,很多公司产生的数据太多了,数据量太大了。用原来的技术去做,有种捉襟见肘的感觉,要么在性能上面,要么在速度上面遇到了瓶颈,这个时候需要新的技术来解决&…

微信视频开发jquery mobile

功能 微信企业号里开发一个微视频功能,用于播放视频。技术 J2EE,前端ui是jquerymobile,HTML5,CSS3,开源视频插件:mediaelement-and-player.min.js 插件官网:http://www.mediaelementjs.com/视…

python加密程序_Python 简单的可逆加密程序

简单加密1.[代码][Python]代码#codingutf-8Description: 可逆的加密与解密Environment: python2.5.xAuthor:idehonggmail.comimport osimport sysclass Code(object):可逆的加密与解密def __init__(self, key "idehonggmail.com"):self.__src_key keyself.__key s…

eclipse中tomcat服务器locations不能修改,解决eclipse中Tomcat服务器的server location选项不能修改的问题...

解决eclipse中Tomcat服务器的server location选项不能修改的问题问题描述编辑tomcat服务器时,server locations无法编辑,如下图:解决方法在Eclipse菜单栏中选择window — show view — server 可以看到服务的面板,服务面板中可看到…

当create table as select 遇上大数据

统计24小时的红包感知专题,有1.5亿行以上的数据,Nokia给出的方法是先按小时执行算法,再汇总各个小时的执行结果。 算法中包含了大量的 sum(case when)计算。 专题里有5个小节,执行计划的时候,需要跑5次where条件不同…

mybatis源码分析(方法调用过程)

十一月月底,宿舍楼失火啦,搞得20多天没有网,目测直到放假也不会来了。。。 正题 嗯~,其实阅读源码不是为了应付面试,更重要的让你知道,大师是怎样去写代码的,同样是用Java,为啥Clint…

提取多个字段_动态合并多个工作表,数据再多也不怕

小伙伴们好啊,今天老祝和大家分享一个动态合并多个工作表的技巧。很多时候,咱们的数据是按照部门或是月份等项目,分别存放在不同工作表中的,要对这些数据进行分析汇总的时候,需要先将不同工作表中的数据合并到一起才可…

深入理解Oracle的并行操作【好文认真读】

请尊重原文作者,http://czmmiao.iteye.com/blog/1487568 -------------------------------------------------------------------------------- 并行(Parallel)和OLAP系统 并行的实现机制是:首先,Oracle会创建一个进…

服务器虚拟化性能瓶颈怎么办,如何突破虚拟化三大瓶颈

如果你希望在应用虚拟化技术的过程中不出现任何问题的话,那么显然这是不切合实际的期望。虚拟化技术能给你的数据中心带来诸多好处,但是为了可以利用虚拟化的优势,你需要了解可能会面对哪些问题。即使虚拟化技术已经被应用到了许多企业中&…