<---响应头--->php
长链接:html
Connection: keep-alive 开启长链接 ---- connection 英 [kəˈnekʃn]链接 keep 英 [ki:p]保持 alive 英 [əˈlaɪv]活着的
Keep-Alive: timeout=20 长链接时间 ---- timeout 超时chrome
X-Cachejson
X-Cache: 表示你的 http request 是由 proxy server 回的 .
MISS 表示proxy无缓存, HIT 表示proxy缓存了浏览器
例:x-cache:MISS from fs-20 没有用到缓存
x-cache: HIT from fs-20 用到缓存了缓存
Cache-Control主要有如下几种类型:
(1) 请求Request:
[1] no-cache ---- 不要读取缓存中的文件,要求向WEB服务器从新请求 (这个很容易让人产生误解,令人误觉得是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向浏览器提供响应数据时,缓存都要向服务器评估缓存响应的有效性。)
[2] no-store ---- 请求和响应都禁止被缓存 (这个才是响应不被缓存的意思) ---- store [stɔ:(r)] 存储
[2] max-age: ---- 表示当访问此网页后的max-age秒内再次访问不会去服务器请求,其功能与Expires相似,只是Expires是根据某个特定日期值作比较。一但缓存者自身的时间不许确.则结果可能就是错误的,而max-age,显然无此问题.。Max-age的优先级也是高于Expires的。
[3] max-stale ---- 容许读取过时时间必须小于max-stale 值的缓存对象。 ----max [mæks] 最大值 stale [steɪl] 不新鲜的;陈旧
[4] min-fresh ---- 接受其max-age生命期大于其当前时间 跟 min-fresh 值之和的缓存对象 ---- min [mɪn] 分钟; 最小 fresh [freʃ] 新鲜;新的
[5] only-if-cached ---- 告知缓存者,我但愿内容来自缓存,我并不关心被缓存响应,是不是新鲜的.
[6] no-transform ---- 告知代理,不要更改媒体类型,好比jpg,被你改为png. ---- transform [trænsˈfɔ:m] 变换
(2) 响应Response:
[1] public ---- 数据内容皆被储存起来,就连有密码保护的网页也储存,安全性很低
[2] private ---- 数据内容只能被储存到私有的cache,仅对某个用户有效,不能共享 ----private [ˈpraɪvət] 私有的
[3] no-cache ---- 能够缓存,可是只有在跟WEB服务器验证了其有效后,才能返回给客户端
[4] no-store ---- 请求和响应都禁止被缓存
[4] max-age: ----- 本响应包含的对象的过时时间
[5] Must-revalidate ---- 若是缓存过时了,会再次和原来的服务器肯定是否为最新数据,而不是和中间的proxy ---- Must [məst] 必须 revalidate [rɪ'vælɪdeɪt] 使从新生效
[6] max-stale ---- 容许读取过时时间必须小于max-stale 值的缓存对象。
[7] proxy-revalidate ---- 与Must-revalidate相似,区别在于:proxy-revalidate要排除掉用户代理的缓存的。即其规则并不该用于用户代理的本地缓存上。
[8] s-maxage ---- 与max-age的惟一区别是,s-maxage仅仅应用于共享缓存.而不该用于用户代理的本地缓存等针对单用户的缓存. 另外,s-maxage的优先级要高于max-age.
[9] no-transform ---- 告知代理,不要更改媒体类型,好比jpg,被你改为png.安全
Expires -- [iksˈpaiəz] 过时时间
性能优化
Cache-control 用于控制HTTP缓存(在HTTP/1.0中可能部分没实现,仅仅实现了 Pragma: no-cache)
Expires 表示存在时间,容许客户端在这个时间以前不去检查(发请求),等同max-age的效果。可是若是同时存在,则被Cache-Control的max-age覆盖。 ---- Expires [iksˈpaiəz] 过时时间服务器
格式:Expires Tue, 02 Jan 2018 03:44:20 GMT网络
Content-Encoding 是HTTP协议的响应报文头 -----Encoding [ɪn'kəʊdɪŋ] 编码模式
通常形式如:Content-Encoding:gzip,deflate,compress
Content-Type
MediaType,便是Internet Media Type,互联网媒体类型;也叫作MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。
例如: Content-Type: text/html;charset:utf-8;
常见的媒体格式类型以下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型: ---- application [ˌæplɪˈkeɪʃn] 应用
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
Date:Date头域表示消息发送的时间,缓存在评估响应的新鲜度时要用到,时间的描述格式由RFC822定义。例如,Date: Thu, 11 Jul 2015 15:33:24 GMT。
Age:当代理服务器用本身缓存的实体去响应请求时,用该头部代表该实体从产生到如今通过多长时间了。例如,Age:147 (秒)
Last-modified 文件在服务器端最后被修改的时间 ---- Last 最后一个 modified ['mɒdɪfaɪd] 修改日期
例如:Last-Modified: Mon, 25 Dec 2017 05:44:15 GMT
更新原理:
一、在浏览器首次请求某个资源时,服务器端返回的状态码是200 (ok),内容是你请求的资源,同时有一个Last-Modified的属性标记(Reponse Header),标识此文件在服务期端最后被修改的时间,格式:Last-Modified:Tue, 24 Feb 2009 08:01:04 GMT
二、浏览器第二次请求该资源时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头(Request Header),询问该文件是否在指定时间以后有被修改过,格式为:If-Modified-Since:Tue, 24 Feb 2009 08:01:04 GMT
三、若是服务器端的资源没有变化,则服务器返回304状态码(Not Modified),内容为空,这样就节省了传输数据量。当服务器端代码发生改变,则服务器返回200状态码(ok),内容为请求的资源,和第一次请求资源时相似。从而保证在资源没有修改时不向客户端重复发出资源,也保证当服务器有变化时,客户端可以及时获得最新的资源。
Transfer-Encoding(传输编码): chunked ----chunked [tʃɪŋkt] 龟裂的
表示输出的内容长度不能肯定,普通的静态页面、图片之类的基本上都用不到这个。
但动态页面就有可能会用到,但我也注意到大部分asp,php,asp.net动态页面输出的时候大部分仍是使用Content-Length,没有使用Transfer-Encoding: chunked。
不过若是结合:Content-Encoding: gzip 使用的时候,Transfer-Encoding: chunked仍是比较有用的。
Vary (标头):Accept-Encoding ---- Vary [ˈveəri] 变化 accept [əkˈsept] 接受
性能优化里有一项叫指定“Vary:Accept-Encoding”标头,用一句话来讲明它的意义,就是“告诉代理服务器缓存两种版本的资源:压缩和非压缩,这有助于避免一些公共代理不能正确地检测Content-Encoding标头的问题 设想有两个客户,一个使用的旧浏览器不支持压缩,一个使用新的浏览器支持压缩,若是他们都请求同一个网页,那么取决于谁先请求,压缩或非压缩版本便存储在CDN上。这样问题就出现了,旧浏览器请求常规网页但得到缓存的压缩版本,而新浏览器会得到缓存的非压缩版本但尝试去“解压”它。不管哪一种方式都是坏消息。解决方法是,源服务器回送“Vary: Accept-Encoding”。
如今的中间CDN会存储独立的缓存条目,一个是Accept-encoding: gzip ,而若是你没有发送header,则存储另外一个。
标头“Vary:Accept-Encoding”指定方法
如今的新浏览器都支持压缩了,所以若是网站启用了GZip,能够无需再指定“Vary: Accept-Encoding”标头,不过指定“Vary: Accept-Encoding”标头会有更高的保险,而它并不须要你额外的开销,为何不指定呢?
X-UA-Compatible ----Compatible [kəmˈpætəbl] 兼容
X-UA-Compatible是自从IE8新加的一个设置,对于IE8如下的浏览器是不识别的。 经过在meta中设置X-UA-Compatible的值,能够指定网页的兼容性模式设置。
在网页中指定的模式优先权高于服务器中(经过HTTP Header)所指定的模式。 兼容性模式设置优先级
经常使用的例子:
<meta http-equiv="X-UA-Compatible" content="IE=7">
X-Firefox-Spdy
<---请求头--->
Accept 属于请求头
1. Accept属于请求头, Content-Type属于实体头。
Http报头分为通用报头,请求报头,响应报头和实体报头。
请求方的http报头结构:通用报头|请求报头|实体报头
响应方的http报头结构:通用报头|响应报头|实体报头
2. Accept表明发送端(客户端)但愿接受的数据类型。
好比:Accept:text/xml;
表明客户端但愿接受的数据类型是xml类型
3. Content-Type表明发送端(客户端|服务器)发送的实体数据的数据类型。
好比:Content-Type:text/html;
表明发送端发送的数据格式是html。
请求报头容许客户端向服务器端传递请求的附加信息以及客户端自身的信息。
经常使用的请求报头
Accept ----Accept [əkˈsept] 接收
Accept请求报头域用于指定客户端接受哪些类型的信息。eg:Accept:image/gif,代表客户端但愿接受GIF图象格式的资源;Accept:text/html,代表客户端但愿接受html文本。
Accept-Charset -----Charset [t'ʃɑ:set] 编码格式
Accept-Charset请求报头域用于指定客户端接受的字符集。eg:Accept-Charset:iso-8859-1,gb2312.若是在请求消息中没有设置这个域,缺省是任何字符集均可以接受。
Accept-Encoding -----Encoding [ɪn'kəʊdɪŋ] 字符编码
Accept-Encoding请求报头域相似于Accept,可是它是用于指定可接受的内容编码。eg:Accept-Encoding:gzip.deflate.若是请求消息中没有设置这个域服务器假定客户端对各类内容编码均可以接受。
Accept-Language ----Language [ˈlæŋgwɪdʒ] 语种
Accept-Language请求报头域相似于Accept,可是它是用于指定一种天然语言。eg:Accept-Language:zh-cn.若是请求消息中没有设置这个报头域,服务器假定客户端对各类语言均可以接受。
Authorization
Authorization请求报头域主要用于证实客户端有权查看某个资源。当浏览器访问一个页面时,若是收到服务器的响应代码为401(未受权),能够发送一个包含Authorization请求报头域的请求,要求服务器对其进行验证。
Host(发送请求时,该报头域是必需的)
Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它一般从HTTP URL中提取出来的,eg:
咱们在浏览器中输入:http://www.guet.edu.cn/index.html
浏览器发送的请求消息中,就会包含Host请求报头域,以下:
Host:www.guet.edu.cn
此处使用缺省端口号80,若指定了端口号,则变成:Host:www.guet.edu.cn:指定端口号
User-Agent
咱们上网登录论坛的时候,每每会看到一些欢迎信息,其中列出了你的操做系统的名称和版本,你所使用的浏览器的名称和版本,这每每让不少人感到很神奇,实际上,服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息。User-Agent请求报头域容许客户端将它的操做系统、浏览器和其它属性告诉服务器。不过,这个报头域不是必需的,若是咱们本身编写一个浏览器,不使用User-Agent请求报头域,那么服务器端就没法得知咱们的信息了。
请求报头举例:
GET /form.html HTTP/1.1 (CRLF)
Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,*/* (CRLF)
Accept-Language:zh-cn (CRLF)
Accept-Encoding:gzip,deflate (CRLF)
If-Modified-Since:Wed,05 Jan 2007 11:21:25 GMT (CRLF)
If-None-Match:W/"80b1a4c018f3c41:8317" (CRLF)
User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT 5.0) (CRLF)
Host:www.guet.edu.cn (CRLF)
Connection:Keep-Alive (CRLF)
(CRLF)
Cookie
Cookie是用于维持服务端会话状态的,一般由服务端写入,在后续请求中,供服务端读取。Host
Host:客户端指定本身想访问的http服务器的域名/IP 地址和端口号。If-Modified-Since ----Since [sɪns] 自从; 既然; 由于; 以来
格式:If-Modified-Since Mon, 25 Dec 2017 05:08:41 GMT (304状态下能看到这个头)
If-Modified-Since是标准的HTTP请求头标签,在发送HTTP请求时,把浏览器端缓存页面的最后修改时间一块儿发到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行比较。若是时间一致,那么返回HTTP状态码304(不返回文件内容),客户端接到以后,就直接把本地缓存文件显示到浏览器中。若是时间不一致,就返回HTTP状态码200和新的文件内容,客户端接到以后,会丢弃旧文件,把新文件缓存起来,并显示到浏览器中。