【HTTP】缓存

2018-11-22  本文已影响0人  level

http前言

缓存分为服务器和浏览器缓存,我们来看下浏览器端的缓存机制;浏览器缓存分为html meat标签属性和http报文头信息。

http报文就是浏览器和服务器之间的请求和响应数据信息,报文信息主要包括两个部分头部信息和数据主体。

http有多种缓存规则,根据是否需要向服务器请求,可分为强制缓存(不和服务器交互)和匹配缓存(不管缓存是否有效,都会向服务器发送请求比较缓存的有效性),优先级强制缓存高于匹配缓存。

强制缓存

浏览器发送请求到服务器,服务器响应报文头部会有缓存规则,有如下两种方式:

Expires

服务器返回的到期时间(绝对时间),客户端时间和服务器时间有一定的误差,所以会导致不准确

Cache-Contro

由于Expires会有误差,在http1.1中使用Cache-Control作为替代;Cache-Control有private、public、no-cache、max-age,no-store这几种取值,默认为private;建议使用max-age=***秒后失效,值为时no-cache需使用匹配缓存验证缓存

匹配缓存

浏览器发送请求到服务器和服务器响应报文头部,都会有缓存规则,有如下两种方式:

Etag / If-None-Match

Etag服务器响应报文返回标识,生产规则服务器决定;If-None-Match浏览器请求报文,发送到服务器进行匹配决策,当不匹配时,说明资源有改动并且返回最新整个资源,状态码为200,未改动则继续使用缓存,状态码为304

Last-Modified / If-Modified-Since|Last-Modified

服务器响应报文返回资源最后修改时间;If-Modified-Since浏览器请求报文,发送资源最后修改时间到服务器进行匹配决策,如果服务器的资源最后修改时间大于If-Modified-Since时间,说明已被修改过,则返回最新整个资源,状态码为200,未改动则继续使用缓存,状态码为304

上一篇下一篇

猜你喜欢

热点阅读