浏览器、缓存服务器、源服务器
浏览器:资源请求直接发起方。
源服务器:资源实际提供方。
缓存服务器:在浏览器、源服务器之间架设的中间服务器,由它代替浏览器,向源服务器发起资源请求,如Squid等各类代理服务器;
副本有效性校验
指源服务器上的资源是否更新
本地副本是否过期
本地副本通过max-age指定缓存有效期
常用 Cache-Control 值
public
所有内容都将被缓存(客户端和代理服务器都可缓存)
private
内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不可缓存)
no-cache
必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证令牌 (ETag),no-cache 会发起往返通信来验证缓存的响应,如果资源未被更改,可以避免下载。
no-store
所有内容都不会被缓存到缓存或 Internet 临时文件中
must-revalidation/proxy-revalidation
如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证
max-age=xxx (xxx is numeric)
缓存的内容将在 xxx 秒后失效, 这个选项只在HTTP 1.1可用, 并如果和Last-Modified一起使用时, 优先级较高
特别说明
no-store: 告诉浏览器、缓存服务器,不要缓存本地副本。
no-cache: 告诉浏览器、缓存服务器,不管本地副本是否过期,使用资源副本前,一定要到源服务器进行副本有效性校验。
must-revalidate:告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。