前端网络协议面试题
目录

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

· 约 2 分钟读完 · 第 38 / 184 章

推荐答案

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

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

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

本题详细解读

Cache-Control: max-age

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

Cache-Control: s-maxage

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

区别总结

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