当前位置:黑鲸出海 > 热点资讯 > 干货分享 >  如何保证CDN和源站内容同步?

如何保证CDN和源站内容同步?

发表时间:2021-09-15  来源:腾讯云CDN  作者:雷镇豪&腾讯云CDN  浏览:次  
内容分发网络(Content Delivery Network,CDN)通过将源站内容缓存至遍布全球的海量加速节点,使用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。

内容分发网络(Content Delivery Network,CDN)通过将源站内容缓存至遍布全球的海量加速节点,使用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。

1.源站和CDN的关系

源站:指用户稳定运行的业务服务器,腾讯云CDN的源站可以选择自有源站或对象存储(腾讯云COS&第三方对象存储)。

域名接入CDN之后,用户请求CDN获取静态资源时,CDN节点便会回到源站获取资源,之后缓存到CDN节点本地Cache中,下次访问相同资源时,便可以在节点直接返回,而不需要再回到源站获取资源,利用腾讯云遍布全球的CDN节点与精准的智能调度方案,可以极大的提升终端用户的访问体验。

2.源站基础配置说明

腾讯云CDN支持配置域名源站基本信息、回源请求协议、回源HOST等信息,可在源站配置模块进行相关操作,接下来我们看一些基本的源站配置:

登录腾讯云CDN控制台,在菜单栏里选择【域名管理】,单击域名右侧【管理】,即可进入域名配置页面,第一栏中基本信息下方即为源站配置模块:

1A6A5BBC-4215-4710-BD23-A4464B068F0C.png

腾讯云CDN支持丰富的源站配置,接下来分别进行介绍:

(1)主源站配置

30AF1473-B2F3-480D-AABC-5A9D4AA4A13A.jpeg

(2)回源协议

CDN加速节点回源到用户源站时使用的协议。

7D990EE5-3518-4B45-B53C-6F4B7212AA06.jpeg

存在HTTPS回源情况下,请保证源站支持HTTPS访问,否则会导致回源失败。

(3)回源HOST

即回源域名,CDN节点在回源时,访问的源站IP地址下具体的站点域名。

-当源站为自有源时,默认为当前加速域名。若接入泛域名,则默认为泛域名,且实际回源HOST为访问域名。您可根据实际业务情况自行修改。

-当源站为COS源或者第三方对象存储源时,默认为存储桶访问地址,与源站地址一致,不可修改。

源站地址和回源HOST的区别如下:

源站地址:源站地址决定了回源时请求到的具体IP地址。

回源HOST:回源HOST决定了回源请求访问到该IP地址上的具体站点。

(4)热备源站配置

您可以为您的主源站添加热备源站,所有回源请求均会先访问主源站,若返回为4XX/5XX错误码,或链接超时、协议不兼容等情况后,会再次回源至热备源站进行资源拉取,保障用户回源高可用。

支持针对热备源站独立配置源站地址和回源HOST。

热备源站注意事项:

1、热备源的源站类型不支持COS源和第三方对象存储。

2、若主源站开启了IPv6源站,则不支持添加热备源站。

3、热备源站不支持配置权重。

以上就是腾讯云CDN源站配置的简单介绍。

3.如何保证CDN和源站内容同步?

既然CDN上缓存了大量的源站资源,那就遇到一个问题,即:在源站资源变动之后,如何保证CDN节点上的资源与源站内容同步?

针对这个问题,主要有两个方法,接下来分别进行介绍:

测试资源:http://cdn-purge-1300432670.file.myqcloud.com/test-1.txt

Etag:"d41d8cd98f00b204e9800998ecf8427e"

390B94FF-DFE8-4947-B044-C24A1F51D4E9.png

特殊名词解释

Etag:腾讯云COS资源的唯一ID。如通过PUT Object上传的对象,则为上传文件内容的MD5值,如通过分块上传或使用历史版本API上传的对象,为上传文件内容的唯一ID,不具备校验功能。

首先我们可以通过控制台的预热功能先将目标资源在节点上进行缓存预热,保证节点上都有缓存的资源。

3855B523-47E4-4208-A7DB-F8FACEEB3EEF.png

(1)控制台刷新

我们可以在源站资源变更之后,通过控制台主动进行刷新,以URL刷新为例,测试请求可以看到请求命中了缓存,此时文件的Etag与COS中的资源保持一致。

E75A7AA9-9E80-4525-94C9-110FEC8B22B4.png

接下来更新cos中的资源,更新后的Etag为:

"3ffb2b343fab46288094b3613016d8c4"

8E5A0C9E-8937-4BAD-9F0B-8EC884A9B9AD.png

测试请求,可以看到由于缓存尚未过期,访问资源1.txt仍为旧的内容,CDN与源站出现了不一致:

011FFE5A-81C0-4107-B86C-58B684A7BF41.png

此时我们可以通过控制台主动对资源进行刷新:

E52F9D39-7DE2-47FD-A8E6-9E46F8B86C80.png

等待刷新成功

AD40FC41-E3D6-42C8-ACC2-C96F30FE3D5E.png

再次请求

1FD1C553-CDC6-432F-BB52-FAC2018CDB0D.png

可以发现节点上的缓存已经失效,请求直接回源,拉取到了最新的资源。

(2)缓存键优化

腾讯云CDN在进行缓存时使用的是Key-Value格式进行资源映射,其中的Key即缓存键,是缓存资源的唯一标识。您可通过缓存键规则配置,对不同文件类型的内容配置忽略参数和忽略大小写来进行缓存键优化。

例如,我们可以通过配置忽略参数,保留URL的指定参数作为缓存键的方式,来实现CDN与源站资源的同步。

接下来进行演示:

我们在URL中使用version来标识文件版本

74C4DC1B-E421-4CD6-BA8E-614DE2B541F6.png

然后再次进行预热

7A59E1A3-6632-4B08-A7B6-277C58884926.png

可以看到请求命中了节点缓存,version=1的文件的etag为:

3ffb2b343fab46288094b3613016d8c4

E28F53E7-E64E-4F05-81C9-6FD7FE944796.png

此时我们更新源站文件

A4D3443C-021E-4903-AD85-566FAC03EB12.png

并更新URL的version=3来请求

C3380B39-CD28-4F6A-BB9C-B60DE55EAD08.png

可以看到没有命中缓存,而是直接回源获取到了最新的资源。

4.高级回源配置

通过以上的例子,我们可以看到,合理配置源站与缓存键,可以实现各种便捷的功能。

此外,腾讯云CDN还支持高级回源设置,支持更细粒度的回源配置,根据不同规则回源到不同的源站地址。例如:分路径回源(指定文件类型、文件夹、全路径文件(如:/test/1.jpg)、首页回源)等。

可以在在左侧菜单栏选择【域名管理】,单击域名操作列的【管理】,进入域名配置页面,Tab【基础配置】页中【源站信息】模块最下方即可看到【高级回源配置】,欢迎大家进行体验!

EDAA57FD-D8E6-40B0-9530-0C16671DD857.png

注:文章源自于互联网,如有侵权,请联系客服删除。
19951839869
黑鲸出海客服