【CDN 最佳实践】CDN缓存策略解读和配置策略

简介: CDN 作为内容分发网络主要是将资源缓存在 CDN 节点上,然后后续访问即可直接通过 CDN 节点将资源返回给客户端,而不再需要回到源站服务器以加快请求速度。那么 CDN 到底对于哪些请求加速呢?其缓存规则和缓存时间是怎么样的呢?怎么样的缓存规则更加合理呢?本文就对 CDN 的缓存规则解读。

CDN 作为内容分发网络主要是将资源缓存在 CDN 节点上,然后后续访问即可直接通过 CDN 节点将资源返回给客户端,而不再需要回到源站服务器以加快请求速度。那么 CDN 到底对于哪些请求加速呢?其缓存规则和缓存时间是怎么样的呢?怎么样的缓存规则更加合理呢?本文就对 CDN 的缓存规则解读。

CDN 的缓存适用范围

CDN 对于常见的 HTTP 请求均是支持的,具体对不同请求方式的支持情况请参考表一。但是有一点需要注意的是虽然对这些类型的 HTTP 请求均是支持的,但是并不是对所有请求方式都会进行缓存的。 CDN 仅会对于 GET 请求进行缓存,而对于其他的请求均不进行缓存,仅是起到中间代理、转发的功能。因此我们建议添加 CDN 的站点源站最好能够实现动静分离。将动态请求和静态请求的内容独立成两个站点,而 CDN 仅仅加速静态站点中的资源。


                                                                        表一. CDN 对 HTTP 请求支持情况

请求方式 描述 是否支持
GET 从指定的资源请求数据 支持
POST 向指定的资源提交要被处理的数据 支持
HEAD 与 GET 相同,但只返回 HTTP 报头,不返回文档主体 支持
PUT 上传指定的 URI 支持
DELETE 删除指定资源 支持
OPTIONS 返回服务器支持的 HTTP 方法 支持
CONNECT 把请求连接转换到透明的 TCP/IP 通道 不支持



注意

  1. CDN 处理 HEAD 请求时会将 HEAD 请求转换成 GET 请求回源,因此源站日志中记录的是 GET 请求。
  2. CDN 仅支持 POST 和 PUT 方式发送带有请求体(BODY)的 HTTP 请求。

CDN缓存配置

CDN 的缓存配置截图如图 1 所示。缓存配置包括目录和后缀名两种形式,并且可以针对不同的缓存配置设置不同的权重以决定其优先级。其中后缀名即是针对于特定后缀名设置的缓存规则,而目录则是对该目录及其子目录下的所有文件均生效的。当对同一文件同时设置了后缀名和目录的缓存的话会先依据优先级权值先进行选择,在优先级权值相同的情况下会后缀名策略优先。
                                    image
                                                                        图 1. CDN 缓存配置示意图

CDN 缓存规则

总体而言,CDN 所有的缓存规则均可以按照图 2 中所表述的内容进行判断。下面我们对图 2 中的详细内容信息解读。
                                    image
                                                                        图 2. CDN 缓存规则示意图

  1. CDN 处理一个资源是否缓存首先是需要看源站针对于该资源配置的缓存设置。因为源站的不缓存策略是用户自身控制的,因此是有最高的优先级的,当源站配置了缓存规则则转 2 。而如果没有进行任何配置的话则转 3 ,而对于浏览器缓存情况转 7 。
  2. 当源站配置了以下的规则时, CDN 会认为该资源源站不允许 CDN 缓存,并且这种情况下浏览器也是不会做缓存的,因此会每次请求该资源时都回源站,无法进行缓存加速,如果没有则转 4 :
          1)有s-maxage=0,no-cache,no-store,private其中一种

      2)如果没有s-maxage或者s-maxage=0,并且有max-age=0.
      3)带Pragma: no-cache

  1. 在源站没有配置缓存规则需判断 CDN 控制台是否配置缓存规则,如果配置了缓存规则转 4 ,如果没有配置缓存规则转 5 。
  2. 需判断 CDN 控制台是否有配置缓存规则,如果配置了缓存规则的话那么
    CDN 上的缓存策略将覆盖源站的缓存策略,而控制台缓存配置的优先级为:

      1)权重越高的优先级越好;
      2)同等优先级后缀名优先级高于目录优先级;
      3)相同权重且相同优先级则随机匹配(建议避免第三种场景),如果没有配置缓存规则则转 6 。

  1. 需根据源站的缓存规则进行缓存,常见的源站缓存规则有 Cache-Control和 Expires 头,根据 HTTP 协议 Cache-Control 的优先级高于 Expires 头,并且 s-maxage 设置高于 max-age 设置。
  2. 需遵循 CDN 默认缓存规则,默认缓存规则包括:
          1)对于 response 头没有包括 Etag 或者 Last-Modified 头的文件默认是不缓存的(一般认为此类文件为动态文件);

      2)没有 Last-Modified 头的文件默认但是有 Etag 头的缓存 10 秒;
      3)对于有 Last-Modified 头的会按照(当前时间 - Last-Modified 时间) * 0.1,并且将其限制在 [10,3600] 区间内。

  1. 对于源站设置了不缓存的规则时浏览器是不缓存的;如果 CDN 修改了 Cache-Control 或者 Expires 头时,浏览器会按照该修改头缓存;如果没有修改即会按照源站的策略缓存。

CDN 缓存情况查看

常见通过 HTTP 的响应头查看具体 CDN 的缓存情况,如图 3 即是常见的通过 CDN 访问的响应头,可以根据 X-Cache 查看当前该资源是否有在 CDN的 L1 节点缓存,而查看 L2 节点的缓存情况则需要根据 Via 头中的第一部分查看,如果是 M 即是 MISS,没有命中的状态;而出现 H 即是命中缓存。X-Swift-SaveTime 表示该资源缓存到 CDN 节点上的 GMT 时间(相比于北京时间晚8小时);而 X-Swift-CacheTime 表示该资源在 CDN 节点上缓存多长时间会过期。
                        image
                                                                        图 3. CDN 缓存情况示意图

相关文章
阿里云CDN的缓存策略是怎么运作的?
CDN是整个阿里云产品框架中是一个很重要的一环,因为它主要是在产品最外层,保证真实的客户在访问服务器端资源的时候能够有一个较好的体验。 那么CDN底层主要是通过什么样的手段去实现的呢?其实它就相当于在客户的就近的地区,布置了对应的节点,并且把对应的一些静态资源,比如说图片、视频等这些资源预先先缓存到对应的节点上。
2331 0
【CDN 最佳实践】CDN缓存策略解读和配置策略
CDN 作为内容分发网络主要是将资源缓存在 CDN 节点上,然后后续访问即可直接通过 CDN 节点将资源返回给客户端,而不再需要回到源站服务器以加快请求速度。那么 CDN 到底对于哪些请求加速呢?其缓存规则和缓存时间是怎么样的呢?怎么样的缓存规则更加合理呢?本文就对 CDN 的缓存规则解读。
3034 0
阿里云CDN:全球加速网络的实践创新与价值解析
在数字化浪潮下,用户体验成为企业竞争力的核心。阿里云CDN凭借技术创新与全球化布局,提供高效稳定的加速解决方案。其三层优化体系(智能调度、缓存策略、安全防护)确保低延迟和高命中率,覆盖2800+全球节点,支持电商、教育、游戏等行业,帮助企业节省带宽成本,提升加载速度和安全性。未来,阿里云CDN将继续引领内容分发的行业标准。
79 7
|
2月前
|
阿里云CDN边缘脚本示例实现/?p123重定向/p/123.html
本文介绍了如何通过EdgeScript实现URL重定向,将`http://www.example.com/?p123`重定向到`http://www.example.com/p/123.html`。使用捕获请求URI中的参数并进行重写,具体代码和内置变量参考阿里云CDN开发者文档。示例代码展示了关键的实现步骤。
38 8
课时4:阿里云云存储(OSSTableStoreNAS)+CDN产品:更快速度,更低成本
阿里云云存储(OSS、TableStore、NAS)结合CDN,提供高效、低成本的海量数据存储与加速服务。基于飞天操作系统,具备近乎无限的存储空间、99%可用性和多个九的数据持久性,支持多种数据类型和应用场景。CDN覆盖全球500+节点,确保毫秒级访问速度,助力企业应对大数据时代的挑战,提升用户体验。
|
3月前
|
CDN
阿里云CDN收费标准,不同计费模式价格表(基础服务费和增值服务费用整理)
阿里云CDN的计费包括基础费用和增值费用。基础费用有三种计费方式:按流量、带宽峰值和月结95带宽峰值,默认按流量计费。增值服务如HTTPS、QUIC、WAF和实时日志等,使用才收费。详细价格和规则请参考阿里云官网。
265 12
|
3月前
|
CDN
阿里云CDN怎么收费?看这一篇就够了,CDN不同计费模式收费价格全解析
阿里云CDN的费用由基础费用和增值费用组成。基础费用有三种计费方式:按流量、按带宽峰值和月结95带宽峰值,默认为按流量计费,价格根据使用量阶梯递减。增值费用包括静态HTTPS请求、QUIC请求等,按实际使用量收费,不使用不收费。具体收费标准和详细规则可参考阿里云官方页面。
阿里云国际站注册教程:阿里云cdn加速怎样
通过阿里云CDN加速,用户可以实现网站内容的快速加载,提升用户体验,同时减轻源站服务器的压力,提高网站的访问速度和稳定性
阿里云CDN边缘脚本实现+字符转义%2B
对象存储OSS中,文件名包含+字符时,请求URL未转义会导致404错误。解决方法是将URL中的+字符转义为%2B,或通过CDN/DCDN边缘脚本自动转义。示例脚本:若URI包含+,则替换为%2B。
107 10
将Certbot/ACME.sh自动化申请的证书自动部署到阿里云CDN
本文介绍了阿里云 CDN SSL 证书自动更新工具,定期检查证书有效期,使用Let's Encrypt 等工具签发的证书自动更新至阿里云 CDN,支持 Docker 及 .NET 8 部署,简化证书管理流程。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等