繁体   English   中英

在Cache-Control HTTP标头中使用max-age和s-maxage是否有意义?

[英]Does it make sense to have max-age and s-maxage in the Cache-Control HTTP header?

考虑到max-age适用于所有缓存,而s-maxage仅适用于共享缓存(代理和网关缓存)....

在非可过期和公共页面中使用这两个指令是否有意义?

控制器伪代码:

w = Response();
w.setPublic();
w.setMaxAge("1 year");
w.setShareMaxAge("1 year");

return w;

来自HTTP标头字段定义

14.9.3基本过期机制的修改

...

S-最大生存周期

如果响应包含s-maxage指令,则对于共享缓存(但不包括私有缓存),此指令指定的最大期限将覆盖 max-age指令或Expires标头指定的最大期限。

...

注意,“ 覆盖 ”。 因此,只有当您打算为共享缓存指定不同的最大年龄时才有意义,而max-age将由最终用户使用。

在您的特定示例中,它们是相同的,因此指定s-maxage是不必要的。

定义中要注意的关键点是共享缓存

来自HTTP标头字段定义

14.9.3基本过期机制的修改

...

S-最大生存周期

如果响应包含s-maxage指令,则对于共享缓存 (但包括私有缓存 ),此指令指定的最大期限将覆盖 max-age指令或Expires标头指定的最大期限。

...

这意味着像varnish,cloudfront,cloudflare这样的反向代理/缓存可以具有与浏览器缓存不同的缓存时代。 我个人更喜欢s-maxage值高于maxage

在HTTP 1.1中,一旦响应被缓存,您就无法联系浏览器以使缓存无效,但您可以将其告知CDN。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM