一、什么是刷新?
刷新是指淘汰cdn节点上的旧文件,重新获取文件的新版本。
二、什么是预热?
首次发布的文件,主动从源站推送到CDN,让用户访问到CDN时不用回客户的源站命中。
三、为什么要刷新?
CDN节点缓存的资源没有过期,但是基于客户的业务要求,需要更新CDN节点上缓存资源。遇到这种场景刷新功能就登场了,刷新就是强制删除CDN节点缓存内容。用户请求这些资源时,CDN节点需要重新回源拉取资源,保证响应的资源与源站一致。
常见的场景:比如A公司游戏包发布后,发现有bug需要修复,为了降低影响,需要把CDN节点上缓存的旧游戏安装包都删除。
刷新类型分为目录刷新和URL刷新。URL刷新是直接将节点上缓存的资源删除。对于目录刷新,会将节点上的文件资源过期,会同源站对比Last-Modified时间,比如节点上的目录文件的Last-Modified为:Mon, 26 Dec 2022 11:11:00 GMT,源站文件的Last-Modified为Mon, 28 Dec 2022 11:11:00 GMT.则此时源站会告诉节点:你的文件比我的文件老,我已经更新文件了,快来取最新的资源吧,此时会将源站新的资源更新到节点上,否则,源站返回304,告诉节点,你节点上的资源已经和我源站上的资源是一致,为最新的了,无需更新。
四、为什么要预热?
主动从源站推送到CDN,让用户访问到CDN时不用回客户的源站命中。
xx游戏在9月12日首次开发,国内的游戏玩家早就迫不及待等在开服,抢着开服的时候赶紧下载游戏客户端。如果没有预热,第一批玩家在访问官网下载时,官网CNME记录解析到CDN。由于是第一次访问,CDN中缓存也没有,因此需要回源站去获取游戏客户端。
这就会导致首批下载的用户体验很差,因为都集中访问源站主机,源站主机的CPU利用率和带宽会跑的很高。第一批玩家下载完成后,CDN中也能够缓存了一份,第二批玩家下载就直接在CDN中命中,速度比第一批快得多。但是等CDN缓存好完整一份游戏客户端,可能半天到1天的时间就过去了。因为第一批下载时,源站压力非常大,CDN回源的带宽可能只有几KB,几KB的速度下载2GB的文件,可能要好几天了。那么游戏开服的头几天连游戏客户端都下载不了。
在开服前,通过预热功能,将游戏安装包从源站推送到各CDN节点,提前先缓存起来。等开服的时候,第一个玩家也能从CDN中快速获取到游戏安装包。