《HTTP 權威指南》筆記:第十五章 實體與編碼

如果把 「HTTP 報文」想象為因特網貨運系統的「箱子」,那么「HTTP 實體」就是報文中的實際的「貨物」.

其中,實體又包含了「實體首部」 和 「實體主體」,實體首部用于描述各種參數,實體主體就是原始貨物.

常見的實體首部

實體的大小: Content-Length

定義:

報文的字節的數量

功能:

HTTP 的早期版本用 Content-Length.來判斷是否關閉連接,進而判斷報文結束.
注意:

  1. 持久連接必須有 Content-Length ,因為連接是持久的,因此客戶端無法依賴連接關閉來判別報文的結束.
  2. 經過內容編碼之后,說明的是編碼之后的報文主體的長度.

實體摘要: Content-MD5

定義:對報文主體進行 MD5 算法得到的結果
功能:防止報文被篡改

媒體類型: Content-Type

定義:主體的 MIME 類型
注意:經過內容編碼之后, Content-type 首部說明的仍是編碼之前實體主體的類型.

一種Content-type:multipart

定義:報文中存在多個報文,合成一個復雜的報文發送
功能:支持多部分主體,常常用于填寫表格

內容編碼: Content-Encoding

定義:為了達到減少傳輸時間的目的,對主體內容進行壓縮.

類型:

內容編碼的類型是 Content-Encoding 的值,有下面幾種:

  1. gzip
  2. compress
  3. deflate
  4. identity(沒有編碼,當沒有 Content-Encoding 時的值)

傳輸編碼: Transfer-Encoding

定義

與內容編碼僅僅把報文主體內容編碼不同, 傳輸編碼將整個報文進行編碼.

分塊編碼

定義:將報文分割為大小已知的塊,塊與塊緊挨著發送.
格式:以長度值為 0 的塊代表主體結束.
特點:不需要知道 Content-length(在主體是動態創建的情況下很實用)

實例操控 instance manipulations

定義:在不同的時間下,一個對象可能有不同的版本.要求客戶端能夠標示它所擁有的資源的副本,并且在一定的條件下請求實例.
主要有兩種辦法進行實體操控:

  1. 范圍請求
  2. 差異編碼

范圍請求:Accept-Ranges

定義:

允許客戶端在副本不再有效的情況下,不請求完整副本,只請求文檔的一個范圍

應用:

下載中斷的文件在重新下載時不需要重頭開始下載.

差異編碼:A-IM

定義:

當頁面的內容發生變化的時候,即使改動的內容很少,也要重新請求.
差異編碼指的是客戶端愿意服務器只發送改變的部分,以更快地得到更新的頁面.

A-IM 這個 header

A-IM: 是 Accept Instance Manipulation 的縮寫,其功能相當于:

客戶端說:“哦,對了,我能接受某些形式的實例操控,如果你會其中的一種的話,就不用發完整的文檔給我了.”

缺陷

如果一個網頁更新比較頻繁,服務器為了能夠更快地進行差異計算,于是需要把各個版本的文檔儲存在服務器上,導致硬盤的空間減少.





轉載于:https://www.cnblogs.com/FBsharl/p/10662670.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387070.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Cloud Sleuth進階實戰

為什么需要Spring Cloud Sleuth 微服務架構是一個分布式架構,它按業務劃分服務單元,一個分布式系統往往有很多個服務單元。由于服務單元數量眾多,業務的復雜性,如果出現了錯誤和異常,很難去定位。主要體現在&#xff…

Element表格嵌入復選框以及單選框

1&#xff0c;element 表格嵌入CheckBox 效果圖如下&#xff1a; 2&#xff0c;element結合checkBox實現單選效果如下&#xff1a; html代碼&#xff1a; <template><div><p>shopInfo</p><el-tableref"multipleTable":data"tableDat…

溫故之 “插入排序”

概念&#xff1a;將一個數據插入已經排好序的有序數組中&#xff0c;從而得到一個新的多一個數據的有序數組。 概念理解~~ 將要排序的是一個亂的數組int[] arrays {3, 2, 1, 3, 3}; 在未知道數組元素的情況下&#xff0c;我們只能把數組的第一個元素作為已經排好序的有序數據&…

實驗二3

#include "stdafx.h" #include "stdio.h" int main(int argc, char* argv[]) {int a,b,c; scanf("%d %d %d",&a,&b,&c);if(ab&&bc) printf("等邊三角形");else if((ab&&b!c)||(ac&&c!b)||(bc&a…

webpack來打包你的vue項目,如發現你的vendor.js過大

1.如果你使用了webpack來打包你的vue項目&#xff0c;如發現你的vendor.js過大則可以參考本文的解決方案. 2.造成過大的原因是因為在main.js導入第三庫太多時,webpack合并js時生成了vendor.js(我們習慣把第三方庫放在vendor里面)造成的.如下圖在main.js引用element-ui等第三方…

TF01 簡介

總覽 如何從實體中提取特征&#xff0c;對于很多傳統機器學習算法的性能有巨大影響。 一旦解決了數據表達和特征提取&#xff0c;很多人工智能任務也就解決了90%。 對許多機器學習算法來說&#xff0c;特征提取不是一件簡單的事情。 深度學習解決的核心問題之一就是自動的將簡…

K8s基本概念入門

序言 沒等到風來&#xff0c;綿綿小雨&#xff0c;所以寫個隨筆&#xff0c;聊聊k8s的基本概念。 k8s是一個編排容器的工具&#xff0c;其實也是管理應用的全生命周期的一個工具&#xff0c;從創建應用&#xff0c;應用的部署&#xff0c;應用提供服務&#xff0c;擴容縮容應用…

idea出現找不到實體類

今天經理遇到一個很奇怪的問題&#xff1a; 在使用idea時&#xff0c;就是包真實存在&#xff0c;但是包中的實體類卻無法智能提示&#xff0c;也無法導入成功&#xff1b; 我推薦的解決辦法是重新導入&#xff0c;但是沒有用&#xff0c;經理在網上找了很多解決方式&#xff0…

TF02 入門

計算模型——圖 數據模型——張量 運行模型——會話 TensorFlow計算模型——計算圖 計算圖是TF中最基本的一個概念&#xff0c;TF中的所有計算都會被轉化為計算圖上的結點。 TF是一個通過計算圖的形式來表述計算的編程系統。TF中的每一個計算都是計算圖上的一個節點&#x…

ElasticSearch、Logstash和Kiabana三個開源工具。

一 方案背景 通常&#xff0c;日志被分散的儲存不同的設備上。如果你管理數十上百臺服務器&#xff0c;你還在使用依次登錄每臺機器的傳統方法查閱日志。這樣是不是感覺很繁瑣和效率低下。開源實時日志分析ELK平臺能夠完美的解決日志收集和日志檢索、分析的問題&#xff0c;ELK…

「一本通 6.4 例 4」曹沖養豬(CRT)

復習一下 擴展中國剩余定理 首先考慮兩個同余方程\[ x \equiv a_1\; mod\; m_1\\ x \equiv a_2\; mod\; m_2 \]化成另一個形式\[ x n_1 * m_1 a_1\\ x n_2 * m_2 a_2 \] 聯立可得\[ n_1 * m_1 a_1 n_2 * m_2 a_2\\ n_1 * m_1 - n_2 * m_2 a_2 - a_1 \]有解的前提是\[ \…

06 MapReduce工作機制

MapReduce作業的執行流程 1、提交作業 在提交JobConf對象之後&#xff0c;用戶程序調用JobClient的runJob方法。 runJob方法會先行調用JobSubmissionProtocol接口所定義的submitJob方法&#xff0c;並將作業提交給JobTracker。 緊接著&#xff0c;runJob不斷循環&#xff0…

solr elasticsearch比較

solr&#xff1a; 優點 1、Solr有一個更大、更成熟的用戶、開發和貢獻者社區。 2、支持添加多種格式的索引&#xff0c;如&#xff1a;HTML、PDF、微軟 Office 系列軟件格式以及 JSON、XML、CSV 等純文本格式。 3、Solr比較成熟、穩定。 4、不考慮建索引的同時進行搜索&#xf…

力扣(LeetCode)292. Nim游戲 巴什博奕

你和你的朋友&#xff0c;兩個人一起玩 Nim游戲&#xff1a;桌子上有一堆石頭&#xff0c;每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最后一塊石頭的人就是獲勝者。你作為先手。 你們是聰明人&#xff0c;每一步都是最優解。 編寫一個函數&#xff0c;來判斷你是否可以在給定石頭數…

Spring Cloud應用監控與管理Actuator

由于我們把一個復雜高耦合的單體系統拆分成了多個小型服務&#xff0c;所以部署應用的數量在不斷增長&#xff0c;造成維護復雜度大大提升。所以我們需要一套自動化的監控運維機制&#xff0c;這套運維機制可以不間斷的獲取每個服務應用的各種指標&#xff0c;并根據這些指標信…

2019.04.09 電商25 結算功能1

結算功能要獲取很多數據&#xff0c; 現在的主要問題是要知道獲取對應的商品信息&#xff0c;要知道我選的是哪個的商品信息啊 它們選框的類名都一樣啊&#xff0c;能遍歷嗎&#xff1f;遍歷之后要去獲取&#xff0c;它父級屬性的值 有多少商品就有多少復選框&#xff0c;可以獲…