HTTP头字段含义

一,Cache-Control: 

请求:

no-cache: 不要缓存的实体,要求现从服务器去取

max-age: 只接受age小于max-age值,并且没有过期的对象

max-stale: 可以接收过期的对象,但是过期时间必须小于max-stale的值

min-fresh: 接受其新鲜生命期大于其当前 Age 跟 min-fresh 值之和的缓存对象(什么是新鲜生命期?)

 

响应:

public(可以用cache内容回应任何用户)

private(只能用缓存内容回应先前请求该内容的那个用户)

no-cache(可以缓存,但是只有在跟WEB服务器验证了其有效后,才能返回给客户端)

max-age(本响应包含的对象的过期时间)

no-store(不允许缓存)

 

二,Connection

请求:

close(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,断开连接,不要等待本次连接的后续请求了)

keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求)

 

响应:close(连接已经关闭)。keepalive(连接保持着,在等待本次连接的后续请求)。

Keep-Alive:如果浏览器请求保持连接,则该头部表明希望 WEB 服务器保持。

 

三,Vary

Vary头域值指定了一些请求头域,这些请求头域用来决定当缓存中存在一个响应,并且该缓存没有过期失效,是否被允许去利用此响应去回复后续请求而不需要重验证(revalidation)。

通俗点的例子:

过程:我的浏览器 ---请求---->squid -----请求----->apache

apache在返回头中返回了一个vary:Accept-encoding ,则squid在存储缓存文件时需要将“我的浏览器”发出的请求头信息中的Accept-encoding字段的(大多情况就是gzip,deflate之类的)作为缓存key的一部分,因此对于不同的Accept-encoding字段值,都需要保存不同的文件。(IE与firefox的请求头的Accept-encoding字段值中就有一个空格的差别

下次请求到squid的时候,需要先找到一个缓存文件的索引文件,根据索引文件中的不同的Accep-encoding值再去找相应的缓存文件,通俗的说就是:根据某个请求域的不同的值去缓存相同文件的不同表现

参考:http://shenzhenseo.h.baike.com/?m=article&id=93998

 

你可能感兴趣的:(http)