HTTP协议常用字段

转载 2015年11月17日 23:09:35

HTTP 协议中的 Transfer-Encoding这里写链接内容

http 304优化,了解客户端缓存

使用HMTL5 API监控前端性能

前端工程精粹(一):静态资源版本更新与缓存
浏览器缓存和304的冲突问题

状态码

100-199
200-299 成功
300-399 重定向,服务器资源被移除
400-499 客户端错误
500-599 服务器程序处理错误

HTTP协议详解(真的很经典)

常用字段

简介

 ETAG在HTTP协议中的定义是资源实体的标记(entity tag),强标识一个资源。是缓存过期的一种代替方案(IF-MODIFIED-SINCE,IF-UNMODIFIED-SINCE)。服务器端资源一旦改变,ETAG值需要跟着改变。但是协议没有规定ETAG的计算方法,可以任意实现。一般对应静态资源(静态URL或文件)采用MD5摘要方式较好。

ETAG与IF-MATCH,IF-NONE-MATCH配合实现缓存方案,代替IF-MODIFIED-SINCE,IF-UNMODIFIED-SINCE(另外)

资源(Resource):URL唯一标识的资源,一个URL对应一个资源。

实现原理
服务器端创建资源,生成ETAG,每次修改也更新ETAG。
客户端首次访问资源,服务器返回资源实体内容和在头区中返回ETAG值,客户端保存实体内容和ETAG值。
客户端再次访问资源的时候,在头域(header)中加入“If-match:etag值”指令。
服务器接受到请求后,检查资源的ETAG值是否与请求的If-match指定的etag值相同(强匹配),如果匹配则响应304 Not Modified,表示资源未改变,客户端可以直接使用前面请求中保存的资源,如果不匹配才返回资源实体(entity,也就是body体).或者:客户端再次访问资源的时候,在header中加入“If-None-Match:etag值”,如果服务器的ETAG值匹配客户端请求 的etag值则返回412,表示条件冲突,不匹配则返回实体内容。
客户端继续使用缓存的资源。
If-Match:匹配则返回实体内容,否则响应307,不返回实体内容。
If-None-Match:不匹配则返回实体内容,否则响应412错误。

ETag比Last-Modified和 Expires 的优势
Last-Modified和Expires都是时间作为判断资源是否改变的标志存在一些隐患。
在秒级以内多次修改,Last-Modified和Expires无法表示出来,因为Last-Modified和Expires最小粒度为秒级。
对资源多次修改,但是最后又修改回最初的内容,实际上内容并没有改变。
ETag值是根据实际内容变更才更新,所以可以更准确的标志资源。

实际应用

云存储中最为文件的tag,标记文件是否改变。一般使用MD5判断文件是否改变,也可以直接使用MD5值作为ETAG值。
问题:对大文件,修改一小部分内容后,更新ETAG,从新计算MD5,效率太低,解决方案啊~?

Expires头

什么是Expires头?

Expires存储的是一个用来控制缓存失效的日期。当浏览器看到响应中有一个Expires头时,它会和相应的组件一起保存到其缓存中,只要组件没有过期,浏览器就会使用缓存版本而不会进行任何的HTTP请求。Expires设置的日期格式必须为GMT(格林尼治标准时间)。

HTTP1.1协议中缓存的另一种选择

Expires存在着明显的不足。

首先,Expires头使用的是一个特定的时间,要求客户端和服务器端的时钟严格同步。何为严格同步?我们知道客户端的时间是可以修改的,如果服务器和客户端的时间不统一,这就导致有可能出现缓存提前失效的情况,存在不稳定性。其次,假如Expires的日期到来了,那么还需要在服务器配置中提供一个新的日期。

面对这种情况,HTTP1.1引入了Cache-Control头来克服Expires头的限制。Cache-Control使用max-age制定组件被缓存多久,使用秒为单位,例如Cache-Control:max-age=3600;表示组件将被缓存60分钟。如果max-age和Expires同时出现,则max-age有更高的优先级,浏览器会根据max-age的时间来确认缓存过期时间。

问题:

使用永久强缓存后(静态文件末尾添加md5戳),设置Expires为未来时间,但是静态文件还会出现304,如果让浏览器直接使用缓存。

工具

代理工具 :

charles
filldder

HTTP 头部字段

转自:http://xianglp.iteye.com/blog/902569 1、 Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所...
  • linhaiman
  • linhaiman
  • 2011年11月29日 22:56
  • 11881

HTTP协议---HTTP请求中的常用请求字段和HTTP的响应状态码及响应头

用于HTTP请求中的常用请求头字段 Accept:用于高速服务器,客户机支持的数据类型 Accept-Charset:用于告诉服务器,客户机采用的编码格式 Accept-Encoding:用于告...
  • qxs965266509
  • qxs965266509
  • 2012年10月17日 19:47
  • 22495

Http协议中常用字段总结(不定时完善中)

前段时间组里小伙伴儿跟我问起http协议的东西,感觉一顿抓狂,开始各种查资料。发现http协议的资料还是有很多的,但是很多字段的解释不是很详细,为了更好的学习,今天就汇总一下吧~ 1.Http协议概述...
  • u010497711
  • u010497711
  • 2016年06月05日 17:18
  • 541

http协议头字段分析

http协议头字段分析 2012年11月18日 ⁄ 综合 ⁄ 共 9670字 ⁄ 字号 小 中 大 ⁄ 评论关闭 一、基础篇   HTTP(HyperTe...
  • adamska0104
  • adamska0104
  • 2016年07月04日 10:05
  • 1275

Http协议中常用字段总结(不定时完善中)

前段时间组里小伙伴儿跟我问起http协议的东西,感觉一顿抓狂,开始各种查资料。发现http协议的资料还是有很多的,但是很多字段的解释不是很详细,为了更好的学习,今天就汇总一下吧~ 1.Http协议概述...
  • u010497711
  • u010497711
  • 2016年06月05日 17:18
  • 541

http请求头有哪些字段

>>请求头字段的具体含义 Accept:浏览器可接受的MIME类型。 Accept-Charset:浏览器可接受的字符集。 Accept-Encoding:浏览器能够进行解码的数据编码方式,...
  • melody_day
  • melody_day
  • 2016年12月10日 16:02
  • 3630

HTTP请求头各字段解释

Accept 这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 image/jpeg 是最常见的两种可能值。 Accept-Charset ...
  • chenyuanyong110
  • chenyuanyong110
  • 2016年10月10日 20:35
  • 1366

HTTP缓存字段总结

HTTP控制缓存的字段主要包括Cache-Control/Pragma,Expires,Last-Modified/Etag。 1、Cache-Control/Pragma 这个HTTP Hea...
  • StruggleShu
  • StruggleShu
  • 2017年06月12日 16:01
  • 398

http中url的组成和首部字段详解

url组成部分 ://:@:/;?# scheme 协议方案 http #超文本转移协议,我们浏览网站都是这个 https #安全的http连接,...
  • birthmarkqiqi
  • birthmarkqiqi
  • 2015年06月25日 15:34
  • 1338

HTTP 报头字段 以及 返回值

HTTP请求模型 一、连接至Web服务器 一个客户端应用(如Web浏览器)打开到Web服务器的HTTP端口的一个套接字(缺省为80)。 例如:http://www.myweb.com:808...
  • suitingwei
  • suitingwei
  • 2015年08月18日 12:04
  • 599
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTTP协议常用字段
举报原因:
原因补充:

(最多只允许输入30个字)