请解释 Cache-Control: max-age 和 Cache-Control: s-maxage 的区别

推荐答案

Cache-Control: max-ageCache-Control: s-maxage 都是用于控制缓存行为的 HTTP 头字段,但它们的作用范围不同。

  • max-age:指定资源在客户端缓存中的最大存储时间,单位为秒。例如,Cache-Control: max-age=3600 表示资源可以在客户端缓存中存储 1 小时。

  • s-maxage:专门用于代理服务器(如 CDN)的缓存控制,单位为秒。它覆盖 max-ageExpires 头字段,但仅对代理服务器有效。例如,Cache-Control: s-maxage=1800 表示资源可以在代理服务器缓存中存储 30 分钟。

本题详细解读

Cache-Control: max-age

  • 作用对象:客户端(浏览器)缓存。
  • 优先级:如果同时设置了 max-ageExpiresmax-age 优先级更高。
  • 示例表示资源可以在客户端缓存中存储 1 小时。

Cache-Control: s-maxage

  • 作用对象:代理服务器(如 CDN)缓存。
  • 优先级:覆盖 max-ageExpires 头字段,但仅对代理服务器有效。
  • 示例表示资源可以在代理服务器缓存中存储 30 分钟。

区别总结

  • 作用范围max-age 作用于客户端缓存,s-maxage 作用于代理服务器缓存。
  • 优先级s-maxage 在代理服务器中优先级高于 max-ageExpires
  • 使用场景max-age 适用于控制客户端缓存,s-maxage 适用于控制代理服务器缓存。
纠错
反馈