欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

缓存中 max-age 和 s-max-age 区别 有大用 有大大用

Cache-Control(HTTP1.1)响应头信息 的s-maxage表示什么意义?

s-maxage一般用在cache服务器上(比如cache CDN),并只对public缓存有效



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


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


在不可接受和公开的页面中使用这两个指令是否有意义?

控制器伪码:


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

return w;

从 HTTP Header Field Definitions



14.9.3 Modifications of the Basic Expiration Mechanism

s-maxage

If a response includes an s-maxage directive, then for a shared cache (but not for a private cache), the maximum age specified by this directive overrides the maximum age specified by either the max-age directive or the Expires header.

注意,“覆盖”.因此,如果您打算为共享缓存指定不同的最大年龄,则与最终用户使用的最大时间相比,这是有意义的.

在你的具体例子中,它们是一样的,所以指定s-maxage是不必要的.

来自 http://www.voidcn.com/article/p-sioeewuf-btp.html



在Cache-Control HTTP标头中使用max-age和s-maxage是否有意义?(Does it make sense to have max-age and s-maxage in the Cache-Control HTTP header?)


Considering that max-age applies to all the caches, and s-maxage only applies to shared caches (proxy and gateway cache)....

Does it make sense to use both directives in a non-expirable and public page?

Controller pseudo-code:

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

return w;
解决方案



From HTTP Header Field Definitions:

14.9.3 Modifications of the Basic Expiration Mechanism

...

s-maxage

If a response includes an s-maxage directive, then for a shared cache (but not for a private cache), the maximum age specified by this directive overrides the maximum age specified by either the max-age directive or the Expires header.

...

Note, "overrides". So, it would only make sense if you intend to specify a different maximum age for shared caches as compared to max-age, which would be used by end users.

In your particular example, they're the same, so specifying s-maxage is just unnecessary.

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



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


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



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



控制器伪代码:



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

返回w;

解决方案


14.9.3基本到期机制的修改



...



s-maxage



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



...




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



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



来自  https://www.it1352.com/887103.html






普通分类: