分塊編碼(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.pswp.cn/news/539773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539773.shtml
英文地址,請注明出處:http://en.pswp.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會創建一個進…

服務器虛擬化性能瓶頸怎么辦,如何突破虛擬化三大瓶頸

如果你希望在應用虛擬化技術的過程中不出現任何問題的話,那么顯然這是不切合實際的期望。虛擬化技術能給你的數據中心帶來諸多好處,但是為了可以利用虛擬化的優勢,你需要了解可能會面對哪些問題。即使虛擬化技術已經被應用到了許多企業中&…