《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.mzph.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;可以获…