强制缓存
expires
Http1.0 中的标准,表明过期时间,注意此处的时间都是指的是服务器的时间。
Cache-Control Http1.1 中的标准,可以看成是 expires 的补充。使用的是相对时间的概念。
主要属性有:
public:所有内容都将被缓存(客户端和代理服务器都可缓存)
private:所有内容只有客户端可以缓存,Cache-Control的默认取值
no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效
协商缓存
Last-Modified / If-Modified-Since
Last-Modified是服务器响应请求时,返回该资源文件在服务器最后被修改的时间
If-Modified-Since则是客户端再次发起该请求时,携带上次请求返回的Last-Modified值
若服务器Last-Modified大于客户端If-Modified-Since的字段值,则重新返回资源,状态码为200;否则则返回304,代表资源无更新,可继续使用缓存文件
Etag / If-None-Match
Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成)
If-None-Match是客户端再次发起该请求时,携带上次请求返回的唯一标识Etag值
若服务器Etag等于客户端If-None-Match的字段值,则返回304,代表资源无更新,继续使用缓存文件;不一致则重新返回资源文件,状态码为200
优先级:
强制缓存 > 协商缓存
Cache-Control > expires
Etag / If-None-Match > Last-Modified / If-Modified-Since