如果把 「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 权威指南》笔记:第十五章 实体与编码相关推荐

  1. R语言实战笔记--第十五章 处理缺失数据

    R语言实战笔记–第十五章 处理缺失数据 标签(空格分隔): R语言 处理缺失数据 VIM mice 缺失值(NA),是导致我们计算错误的一大来源,处理缺失数据在实际的应用中有着较为重要的作用. 基本方 ...

  2. Linux(b站视频兄弟连)自学笔记第十五章——启动管理

    Linux(b站视频兄弟连)自学笔记第十五章--启动管理 CentOS 6.x启动管理 系统运行级别 系统启动过程 启动引导程序grub Grub配置文件 Grub加密与字符界面分辨率调整 系统修复模 ...

  3. 《Windows核心编程》读书笔记二十五章 未处理异常,向量化异常处理与C++异常

    第二十五章  未处理异常,向量化异常处理与C++异常 本章内容 25.1 UnhandledExceptionFilter函数详解 25.2 即时调试 25.3 电子表格示例程序 25.4 向量化异常 ...

  4. 机器学习入门-西瓜书总结笔记第十五章

    西瓜书第十五章-规则学习 一.基本概念 二.序贯覆盖 三.剪枝优化 四.一阶规则学习 五.归纳逻辑程序设计 1.最小一般泛化 2.逆归结 一.基本概念 机器学习中的 "规则"(ru ...

  5. Objective-C学习笔记第十五章文件加载与保存

    第十五章文件加载与保存 Cocoa提供了Core Data,他能在后台处理所有文件内容 Cocoa提供了两个通用的文件处理类:属性列表和对象编码 一.属性列表类 在Cocoa中,有一类名为属性列表的对 ...

  6. 【机器学习-周志华】学习笔记-第十五章

    记录第一遍没看懂的 记录觉得有用的 其他章节:         第一章         第三章         第五章         第六章         第七章         第八章      ...

  7. Programming In Scala笔记-第十五章、Case Classes和模式匹配

    本章主要分析case classes和模式匹配(pattern matching). 一.简单例子 接下来首先以一个包含case classes和模式匹配的例子来展开本章内容. 下面的例子中将模拟实现 ...

  8. Hadoop权威指南笔记1——第1章:初始Hadoop

    第1章:初识Hadoop 1.1 数据!数据! ​ 我们生活在一个大数据的时代.各处都是数据 1.2 数据的存储与分析 ​ 硬盘容量在扩大,但是读写数据没有改变.就会导致读取大数据,数据变慢 ​ 那么 ...

  9. APUE读书笔记-第十五章-进程间通信

    管道 创建管道(pipe函数) #include <unistd.h> int pipe(int fd[2); fd[0]为读打开,fd[1]为写打开 局限性 (1)管道是半双工的,数据只 ...

最新文章

  1. Caffe中计算图像均值的实现(cifar10)
  2. 几种常见自动化测试框架
  3. 全面了解Nginx主要应用场景【转】
  4. UVa 11466 - Largest Prime Divisor
  5. mysql的骚操作:自增长的字段同时插入到另一个字段
  6. 【牛客 - 302哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)】小乐乐切割方块(思维,水题)
  7. mysql 查看集群状态_MySQL数据库集群正确配置步骤
  8. SpringBoot (6)---RestTemplate方法详解(2)
  9. MySQL数据库(二) 一一 MySQL管理
  10. 北京理工大学语音识别技术.ppt
  11. pytorch 中 torch.optim.Adam 方法的使用和参数的解释
  12. 普通开发人员与软件工程师的区别
  13. 一定能成功的Android NDK环境配置教程
  14. adc分辨率和精度的区别_STM32学习笔记—ADC采集数据常见问题
  15. python3编码解码
  16. U-Mail邮件网关智能DNS技术,解决海外邮件接收问题
  17. rsync+crontab实现定时备份
  18. 怀孕计算机在线,【孕期天数计算器在线计算_孕期天数计算器在线计算专题】- 天鹅到家...
  19. 基于思维导图的研究生创新能力培养
  20. 计算机cs怎么使用技巧,CS里的fps设置方法(显卡篇)

热门文章

  1. 装修月记第一弹,硬装篇
  2. android监控指纹信息变化,android监听指纹变化(解决反射思路在android10不生效的问题)...
  3. python可以自动写文章吗_让python来告诉你神奇的操作,如何实现文章自动化
  4. 区别和联系_动机与主题的区别与联系
  5. 华为摄像机搜索软件_别人的终点华为的起点!用普惠AI守护城市安全
  6. linux下I2C驱动发送IO时序,Linux I2C 驱动阅读的碰到的一些网上没有提到的东西
  7. keras 多层lstm_tensorflow-如何在keras中堆叠多个lstm?
  8. Postgresql多线程hashjoin(inner join)
  9. css链接样式_CSS中的样式链接
  10. Java LocalDate类| parse()方法与示例