发布共享代理可复用的图片
为可公开复用的图片响应指定明确的保鲜期和校验器,并把浏览器重新加载与常规缓存复用区分开来解释。
对于经由 HTTP 可见的共享缓存传输的图片响应,要发布明确的生存时间和校验器。当图片可以安全地跨用户复用时,示例响应头如下:
Cache-Control: public, max-age=604800
ETag: "image-v4"
生存时间以秒为单位;604800 表示一周。只有面向跨用户复用的内容才使用 public。
如果浏览器和共享代理需要不同的生存时间,由 s-maxage 提供共享缓存的生存时间。例如,max-age=3600 搭配 s-maxage=604800 会让共享缓存获得更长的保鲜期。
Expires 是日期,不是时长
Expires 接受 HTTP 日期格式的时间戳。max-age 会覆盖该字段,而在共享缓存中 s-maxage 优先。生成响应时再生成任何 Expires 日期。
重新加载可以请求校验
包含 Cache-Control: no-cache 的请求 会要求先向源站成功校验,然后才复用已存储的响应。即使响应的常规保鲜策略本来允许复用,也会出现这种情况。
校验器让缓存能高效地检查未变化的图片。304 响应可以在不重传源站图片字节的情况下确认已存储的表示。因此,发往源站的流量本身并不意味缓存对象已被丢弃。
复查策略时,请对比常规复用和显式重新加载。