Skip to content

CDN

内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。

核心特征是缓存回源,缓存是把资源复制到 CDN 服务器里,回源是资源过期/不存在就向上层服务器请求并复制到 CDN 服务器里。

基于 CDN 的就近原则所带来的优点,可将网站所有静态资源全部部署到 CDN 服务器里。那静态资源包括哪些文件?通常来说就是无需服务器产生计算就能得到的资源,例如不常变化的样式文件、脚本文件和多媒体文件(字体/图像/音频/视频)等。

共享缓存

s-maxageCache-Control 头部中的一个指令,用于设置共享缓存的最大有效时间,类似于 max-age。不同之处在于,s-maxage 仅在共享缓存(例如代理服务器或CDN)中起作用,而不会影响私有缓存(即终端用户的浏览器缓存)。

使用 s-maxage 的目的是为了给共享缓存设定一个独立的缓存时间,而不受终端用户的个别设置影响。这对于代理服务器和CDN来说很有用,因为它们可以在缓存中保留资源的副本,并在指定的时间内提供给所有用户,而不需要再次向原始服务器请求。

下面是一个示例:

http
Cache-Control: s-maxage=3600

上述例子中,s-maxage 的值为 3600 秒,表示共享缓存可以在接下来的1小时内直接使用缓存的资源,而不必向原始服务器发起请求。

如果同时存在 s-maxagemax-ages-maxage 会覆盖 max-age,因为它是专门为共享缓存设计的。

http
Cache-Control: max-age=3600, s-maxage=1800

在这个例子中,对于终端用户的浏览器缓存,资源可以缓存1小时(3600秒),而对于共享缓存,资源可以缓存30分钟(1800秒)。

总的来说,s-maxage 是一个用于控制共享缓存的有效时间的有用指令,特别适用于代理服务器和CDN等场景。