HTTP可缓存性包括:
- public:HTTP请求返回时,经过的代理服务器以及客户端都可以对内容进行缓存。
- private:只有发起请求的浏览器可以进行缓存
- no-cache:本地和代理服务器可以缓存,但是每次使用缓存时都要到服务器验证一下,服务器返回可以使用缓存才能生效。
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:不允许改动返回的内容(比如压缩、格式转换)
缓存头信息并不具有强约束性,只起声明作用。