全球旧事资料 分类
HTTP请求中的缓存cache机制
当资源第一次被访问的时候,HTTP头部如下RequestLi
eGETahtmlHTTP11Host127001UserAge
tMozilla50X11ULi
uxi686zhCNrv19015Gecko2009102815Ubu
tu904jau
tyFirefox3015Accepttexthtmlapplicatio
xhtmlxmlapplicatio
xmlq09q08AcceptLa
guagezhc
zhq05AcceptE
codi
ggzipdeflateAcceptCharsetgb2312utf8q07q07KeepAlive300Co
ectio
keepaliveHTTP返回头部如下StatusLi
eHTTP11200OKDateThu26Nov2009135054GMTServerApache2211U
ixPHP529LastModifiedThu26Nov2009135019GMTEtag“8fb8b144794674acdcc0”AcceptRa
gesbytesCo
te
tLe
gth20KeepAlivetimeout5max100Co
ectio
KeepAliveCo
te
tTypetexthtml当资源第一次被访问的时候,http返回200的状态码,并在头部携带上当前资源的一些描述信息,如LastModified指示最后修改的时间Etag指示资源的状态唯一标识Expires指示资源在浏览器缓存中的过期时间接着浏览器会将文件缓存到Cache目录下,并同时保存文件的上述信息当第二次请求该文件时,浏览器会先检查Cache目录下是否含有该文件,如果有,并且还没到Expires设置的时间,即文件还没有过期,那么此时浏览器将直接从Cache目录中读取文件,而不再发送请求如果文件此时已经过期,则浏览器会发送一次HTTP请求到WebServer,并在头部携带上当前文件的如下信息IfModifiedSi
ceThu26Nov2009135019GMTIfNo
eMatch“8fb8b144794674acdcc0”即把上一次修改的时间,以及上一次请求返回的Etag值一起发送给服务器。服务器在接收到这个请求的时候,先解析Header里头的信息,然后校验该头部信息。如果该文件从上次时间到现在都没有过修改或者Etag信息没有变化,则服务端将直接返回一个304的状态,而不再返回文件资源,状态头部如下
fStatusLi
eHTTP11304NotModifiedDateThu26Nov2009140907GMTServerApache2211U
ixPHP529Co
ectio
KeepAliveKeepAlivetimeout5max100Etag“8fb8b144794674acdcc0”这样,就能够很大程度上减少网络带宽以及提升用户的浏览器体验。当然,如果服务器经过匹配发现文件修改过了,就会将文件资源返回,并带上新文件状态信息。基本字段PragmaPragma头域用来包含实现特定的指令,最常用的是Pragma
ocache。在HTTP11协议中,它的含义和CacheCo
trol
ocache相同。Expires文件在本地缓存的过期时间,如果浏览器发现缓存中的文件没有过期,则不发送请求(有例外,后面介绍)CacheCo
trolCacheCo
trol指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置CacheCo
trol并不会修改另一个消息处理过程r
好听全球资料 返回顶部