摘要: CDN 作为内容分发网络主要是将资源缓存在 CDN 节点上,然后后续访问即可直接通过 CDN 节点将资源返回给客户端,而不再需要回到源站服务器以加快请求速度。那么 CDN 到底对于哪些请求加速呢?其缓存规则和缓存时间是怎么样的呢?怎么样的缓存规则更加合理呢?本文就对 CDN 的缓存规则解读。
CDN 的缓存适用范围
CDN 对于常见的 HTTP 请求均是支持的,具体对不同请求方式的支持情况请参考表一。但是有一点需要注意的是虽然对这些类型的 HTTP 请求均是支持的,但是并不是对所有请求方式都会进行缓存的。 CDN 仅会对于 GET 请求进行缓存,而对于其他的请求均不进行缓存,仅是起到中间代理、转发的功能。因此我们建议添加 CDN 的站点源站最好能够实现动静分离。将动态请求和静态请求的内容独立成两个站点,而 CDN 仅仅加速静态站点中的资源。
表一. CDN 对 HTTP 请求支持情况
注意:
1. CDN 处理 HEAD 请求时会将 HEAD 请求转换成 GET 请求回源,因此源站日志中记录的是 GET 请求。
2. CDN 仅支持 POST 和 PUT 方式发送带有请求体(BODY)的 HTTP 请求。
CDN缓存配置
CDN 的缓存配置截图如图 1 所示。缓存配置包括目录和后缀名两种形式,并且可以针对不同的缓存配置设置不同的权重以决定其优先级。其中后缀名即是针对于特定后缀名设置的缓存规则,而目录则是对该目录及其子目录下的所有文件均生效的。当对同一文件同时设置了后缀名和目录的缓存的话会先依据优先级权值先进行选择,在优先级权值相同的情况下会后缀名策略优先。
图 1. CDN 缓存配置示意图
CDN 缓存规则
总体而言,CDN 所有的缓存规则均可以按照图 2 中所表述的内容进行判断。下面我们对图 2 中的详细内容信息解读。
图 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
3. 在源站没有配置缓存规则需判断 CDN 控制台是否配置缓存规则,如果配置了缓存规则转 4 ,如果没有配置缓存规则转 5 。
4. 需判断 CDN 控制台是否有配置缓存规则,如果配置了缓存规则的话那么
CDN 上的缓存策略将覆盖源站的缓存策略,而控制台缓存配置的优先级为:
1)权重越高的优先级越好;
2)同等优先级后缀名优先级高于目录优先级;
3)相同权重且相同优先级则随机匹配(建议避免第三种场景),如果没有配置缓存规则则转 6 。
5. 需根据源站的缓存规则进行缓存,常见的源站缓存规则有 Cache-Control和 Expires 头,根据 HTTP 协议 Cache-Control 的优先级高于 Expires 头,并且 s-maxage 设置高于 max-age 设置。
6. 需遵循 CDN 默认缓存规则,默认缓存规则包括:
1)对于 response 头没有包括 Etag 或者 Last-Modified 头的文件默认是不缓存的(一般认为此类文件为动态文件);
2)没有 Last-Modified 头的文件默认但是有 Etag 头的缓存 10 秒;
3)对于有 Last-Modified 头的会按照(当前时间 - Last-Modified 时间) * 0.1,并且将其限制在 [10,3600] 区间内。
7. 对于源站设置了不缓存的规则时浏览器是不缓存的;如果 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 节点上缓存多长时间会过期。
图 3. CDN 缓存情况示意图
作者:烨烁
本文为云栖社区原创内容,未经允许不得转载,如需转载请发送邮件至yqeditor@list.alibaba-inc.com
相关推荐
它特别适合大规模部署场景,支持多种缓存策略和服务配置。 #### CDN技术发展趋势 随着云计算和边缘计算技术的发展,未来的CDN将更加智能化、个性化。例如,利用AI算法进行智能调度和优化,根据用户的特定需求定制...
本书将详细解读CDN的工作原理、核心技术组件以及部署和管理CDN网络的最佳实践。由于内容的篇幅限制,这里只能进行初步的介绍。在深入学习CDN技术时,读者会接触到更多细节和技术层面的内容,包括网络架构的设计、...
- **CDN(Content Delivery Network)**即内容分发网络,是一种分布式网络服务架构,通过在网络各处部署节点服务器,将内容缓存至用户最近的边缘节点上,从而改善用户访问网站的速度和服务质量。 - **错位竞争策略**...
通过在全球范围内分布的边缘节点缓存和分发内容,CDN能够减少延迟,减轻源服务器的压力,提升用户体验。以下是对“阿里云CDN服务-快速入门”内容的详细解读: 1. **开通CDN服务**: - 访问阿里云官方网站的CDN产品...
2. 白山科技的技术优势:详细阐述白山科技在CDN领域的技术创新,如优化的缓存策略、自研的智能调度算法,以及针对高并发、大数据量场景的解决方案。 3. 业务模式与盈利结构:介绍白山科技的业务运营方式,包括按...
9. **性能度量**:介绍评估网站性能的工具,如Google PageSpeed Insights、WebPageTest等,以及如何解读和利用这些数据进行改进。 10. **持续优化**:强调建立性能预算、监控和自动化测试的重要性,以实现持续的...
《藏经阁-一站式短视频技术架构的新解读》深入剖析了在移动互联网时代,短视频平台所面临的挑战和解决方案,尤其强调了阿里云在此领域的创新实践。本文将围绕内容上传、存储、处理以及分发四大关键环节进行详细阐述...
性能优化通常从减少HTTP请求数、优化页面内容、使用缓存策略和内容分发网络(CDN)等方面入手。 2. 前端性能优化 前端性能优化主要关注减少和优化网页中涉及客户端执行的资源,例如图片、CSS和JavaScript文件。技术...
这本书主要关注的是在Web开发领域中,如何通过优化技术、策略和实践来提升用户体验,减少加载时间,并提高服务器效率。书中涵盖了多个关键知识点,包括前端优化、后端架构、网络协议以及性能测量和监控。 1. **前端...
例如,它可以用于设置特定的重定向、缓存策略或SSL证书。 最后,`image.conf`文件名暗示了这可能是专门处理图片资源的配置。Nginx可以高效地服务静态资源,尤其是图片。配置可能包括缓存设置、防盗链策略以及针对...
在软件层则可能涉及服务框架的选取、缓存策略的设计、数据库的分布式部署等。这样的分层次讲解能够让读者清晰地了解每一个组件的作用以及它们是如何共同协作来支撑整个大型网站的。 大型分布式网站的另一个核心知识...
这包括了针对不同环节采取的细致优化措施,如视频转码、CDN部署、数据缓存和预加载等策略,都是为了在保证视频清晰度的同时,提升视频的加载速度和播放流畅性。这些技术细节的深入解析,不仅对从事视频服务的技术...
- 微服务设计原则与最佳实践 - 服务注册与发现、熔断与降级策略 - API Gateway和配置中心的作用 7. **云计算模块2-面试题-最终版V3.docx、模块2面试训练技术题.docx** 这两个文件可能包含云计算基础概念、IaaS...
同时,书中提到了数据库查询优化、缓存策略和CDN(内容分发网络)的应用,这些都是提高大型网站性能的关键技术。 优化策略是本书的核心,唐文提供了多种实战技巧和最佳实践。这包括图片优化,如使用SVG、WebP格式,...
8. **性能优化**: 图像服务器通常需要处理大量的并发请求,因此了解如何优化性能,如通过缓存策略、负载均衡、CDN集成等技术,对于提升用户体验和服务器效率非常关键。 9. **安全与监控**: 安全性是任何服务器都...
运维知识体系是IT行业中一个庞大且复杂的领域,它涵盖了从客户端到基础设施的多个层次,确保...同时,对比公有云服务,可以帮助运维人员更好地理解云原生技术和最佳实践,以便在云计算时代找到自己的定位和发展方向。