一,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