考虑到最大生存周期适用于所有高速缓存,以及S-最大生存周期只适用于共享缓存(代理和网关缓存)....
是否有意义在非可到期和公共页面同时使用的指令?
控制器的伪代码:
w = Response();
w.setPublic();
w.setMaxAge("1 year");
w.setShareMaxAge("1 year");
return w;
考虑到最大生存周期适用于所有高速缓存,以及S-最大生存周期只适用于共享缓存(代理和网关缓存)....
是否有意义在非可到期和公共页面同时使用的指令?
控制器的伪代码:
w = Response();
w.setPublic();
w.setMaxAge("1 year");
w.setShareMaxAge("1 year");
return w;
从HTTP标头字段定义 :
基本过期机制14.9.3修改
...
S-最大生存周期
如果响应包括S-最大生存周期指令,则对于一个共享缓存(但不包括专用高速缓存)中,由该指令所指定的最大年龄覆盖由任一最大生存周期指令或Expires头中指定的最长期限。
...
请注意,“ 覆盖 ”。 所以,如果你打算相比,指定不同的最高年龄为共享缓存只会意义max-age
,这将最终用户使用。
在您的具体的例子,它们是相同的,因此指定s-maxage
就是不必要的。
关键点在定义需要注意的是共享缓存
从HTTP头字段定义
基本过期机制14.9.3修改
...
S-最大生存周期
如果响应包括S-最大生存周期指令,则对于一个共享缓存 (但不包括专用高速缓存 )中,由该指令所指定的最大年龄覆盖由任一最大生存周期指令或Expires头中指定的最长期限。
...
这意味着,像清漆,CloudFront的反向代理/缓存的CloudFlare可以有浏览器缓存不同的缓存年龄。 我个人比较喜欢的值s-maxage
要高于maxage
在HTTP 1.1一旦响应缓存,无法联系到浏览器的缓存无效,但你可以告诉它的CDN。