HTTP缓存机制

强制缓存和对比缓存

  • 强制缓存
    若在有缓存,且未失效的情况下直接命中
    没有缓存时,服务器将数据和缓存规则返回

Cache-Control头里的选项:

private:             客户端可以缓存
public:              客户端和代理服务器都可缓存
max-age=xxx:         缓存的内容将在 xxx 秒后失效
no-cache:            需要使用对比缓存来验证缓存数据
no-store:            所有内容不进行缓存
  • 对比缓存
    不管有没有命中都需要向服务器发出请求确认所需资源是否被更改

1. Last-Modified/If-Modified-Since
第一次请求时返回资源最后修改时间Last-Modified
第二次请求时如果有If-Modified-Since,则对比时间
a. 如果时间大于此If-Modified-Since,则说明资源变动,响应资源并返回200.
b. 如果时间小于等于If-Modified-Since,则说明资源无变动,响应304,浏览器继续使用原缓存

2. Etag/If-None-Match【优先级高于Last-Modified/If-Modified-Since】
第一次请求时返回资源标识Etag
第二次请求时如果有If-None-Match,则对比标识
a. 如果不同,说明资源变动,响应资源并返回200
b. 如果相同,说明资源无变动,响应304,浏览器继续使用原缓存


这些选项均存在于响应头和请求头中

HTTP缓存机制_第1张图片
image.png

你可能感兴趣的:(HTTP缓存机制)