HTTP可缓存性包括:
max-age :可以设置缓存的有效期
s-maxage:代理服务器的缓存有效期。同时设置max-age和s-maxage,客户端会使用max-age,代理服务器会使用s-maxage
max-stale:发起端设置,指明请求可以使用过期的缓存。(浏览器用不到)
验证方面:
must-revalidate:如果缓存过期,必须到服务器发送请求重新获取数据
proxy-revalidate:缓存服务器的must-revalidate
Last-Modified:服务器返回Response的上次修改时间,配合客户端发送Request的If-Modified-Since使用
Etag:通过数据签名标记这个资源,下次请求时配合Requesst的If-Match/If-Non-Match的对比缓存中的Etag判断是否使用缓存(数据签名:资源对它的内容会产生唯一的签名,如果内容修改,签名会进行修改,例如对内容hash计算)
no-store:本地和代理服务器都不能存储缓存,每次都到原服务器拿数据。
no-transform:不允许改动返回的内容(比如压缩、格式转换)
缓存头信息并不具有强约束性,只起声明作用。