本文介绍CDN的内容管理中预热功能,主要从业务需求,业务逻辑以及常见问题三方面了解CDN预热功能。
1.为什么要预热?
CDN缓存是通过用户实际请求触发的,并将请求内容缓存保存下来,以便后续访问请求。这样会有一个问题,第一个用户访问源站资源的时候会有较长响应时间。
为了解决这个问题,CDN缓存通过预热集群发请求触发,CDN节点将请求内容缓存下来,提高实际用户首次访问的效率,有效降低文件的响应时间。
啥场景需要这个功能呢?
常见场景就同一时间大量用户请求源站新资源情况,例如新剧的开播,大型电商抢购活动等。大量用户同时发起请求,CDN节点没有缓存导致响应时间较长,甚至源站还会被打爆,业务彻底瘫痪。
2. 预热业务逻辑
预热功能是预热集群模拟请求,触发CDN节点缓存内容。基于触发CDN节点所在层级,常见预热有三种
- 中间源集群或者父集群预热(最常见),图中B线路
- 边缘节点预热,图中A线路
- 指定节点预热,预热集群定点向CDN节点发送请求。
从下图可以看到两个关系
- 预热效果取决于预热请求触发CDN节点与源站距离。节点与源站距离越近,预热效果越差。
- CDN厂家预热带宽成本,触发边缘节点经过中间群集群回源站取资源,在A流程中,CDN厂家存在带宽成本,所以边缘预热和指定节点预热,不同CDN服务厂家支持粒度不一样。
3.预热常见问题预取
- 预热功能开放以及限制
目前腾讯云,预热功能只针对大客户开放,同时对于每日预热URL总条数(不超过1000)以及单次提交条数(不超过20条)有限制,这里主要考虑到预热请求量大的话,会对节点性能有影响。
详见官方文档:https://cloud.tencent.com/document/product/228/6299#url-.E9.A2.84.E7.83.AD
- 能否支持目录预热?
目前仅支持URL预热,目录预热不支持。
- 源站日志如何区分CDN正常回源请求还是预热请求?
1)通过加速平台特定预热机器IP地址
2)通过预取请求的UA头部,例如腾讯云 UA会带有curl/记录
- 预热失败常见问题