作者:辰舒
使用CDN加速静态资源时,CDN会将源站上的资源缓存到距离客户端最近的CDN节点上。当您访问该静态资源时,可直接从CDN的缓存节点上获取,有效避免通过较长的链路回源,提高资源访问效率。在本章节中,我们共同学习如何通过合理配置CDN缓存功能来提升业务缓存的利用率,实现终端用户访问体验的提升。
准备工作
- 已经添加完成的CDN域名
- 阿里云CDN控制台。
缓存配置及工作机制
在正式开始配置之前,我们需要先了解缓存的形式和原理机制。
默认Cachekey
Cachekey是一个文件在CDN节点上缓存时唯一的身份ID,每个在CDN节点上缓存的文件都对应一个Cachekey。文件的Cachekey默认为客户端请求的URL(带参数)。
即 默认情况下,缓存内容的索引名(Cachekey)受到 域名、路径、参数 三大因素共同影响。我们可以理解为,对于同一个边缘节点,请求信息中三者完全一致的情况下将使用同一份缓存内容,三者中有任一因素变化则无法使用同一份缓存。
当我们的访问链接中路径变更或参数变更时,均会生成独立缓存。为了提升缓存效率,我们需要对业务思考以下四个问题:
- 业务访问时,访问URL中是否携带参数(可以分析源站nginx访问日志或业务代码的实现逻辑),这些参数的作用是什么,携带参数不同是否会影响文件响应的内容(或 参数是否会影响源站处理行为)?
如果您的URL中携带变化的参数,默认会影响缓存命中率和加速效果,推荐关注下文「缓存优化-忽略参数缓存」部分内容。
- 业务文件内容更新时,文件的路径(目录/文件名)是否会发生变化?
如果您的文件内容以同名文件覆盖的形式进行更新,推荐关注【缓存时间配置】中的配置引导,针对内容频繁更新的资源降低缓存时间。
- 您的业务中大文件缓存(平均大于20M)是否较多?
如果您的业务中大文件较多,提升缓存及回源效率推荐开启range分片功能,推荐关注下文「缓存优化-range回源」部分内容。
- 您的业务中是否需求针对完全相同的访问URL区分不同的缓存?
即同一个uri对应的资源有多个版本,例如同一个页面的不同压缩格式,一个图片的不同尺寸(甚至也可能是完全不同的内容),服务端通过收到的请求的uri以及一些决定版本的头部信息来确定应该给客户端返回哪个版本,推荐关注下文「缓存优化-多副本及自定义缓存」。
访问URL的格式和场景和缓存利用效率息息相关,在下文的内容中,我们可以通过忽略参数缓存、cachekey改写等功能,对域名的缓存索引方式进行调整,以适配您的业务场景。
小提示:在CDN使用场景中,推荐您的源站更新资源时,考虑以不同的文件名作为新旧版本区分,例如img-v1.0.jpg、img-v2.1.jpg的方式命名,以实现便捷区分新旧缓存的效果。
缓存更新机制
CDN缓存更新主要有两种方式:
- 超出缓存的过期时间
当CDN节点上的缓存失效后,缓存不会立即被清理,在源站返回last-modified/etag头部情况下,CDN将会回源发起缓存有效性校验(即协商缓存)。
可以通俗地理解为,CDN将之前缓存文件的标识信息带回源站询问是否发生变化。文章来源:https://www.toymoban.com/news/detail-830562.html
- 如源站内容未发生变化,源站将返回304状态码,CDN节点仅更新缓存的有效周期,不变更缓存内容,截止下次缓存时间到期前不会再次回源;
- 如源站内容发生变化,源站将返回200状态码和更新后的内容,CDN节点将更新缓存的有效周期并覆盖缓存内容,实现文件更新的效果。
- 主动更新
当CDN节点上的缓存未失效,但源站内容已经发生变化,业务上需要立即更新CDN上资源的缓存时,需要使用CDN的缓存刷新功能,您需要通过 CDN控制台-刷新预热 或者 API接口 下发缓存的刷新任务,详细操作和说明将在文章来源地址https://www.toymoban.com/news/detail-830562.html
到了这里,关于秒懂边缘云 | CDN基础入门:CDN缓存配置及优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!