buaichidoufu 2020-07-28
cdn是把原本需要集中获取的资源缓存到边缘节点,使用户就近访问。通过在网络中增加一层缓存层,通过全局负载技术将源站的资源分发到里用户最近的网络边缘节点上,使缓存服务器响应用户请求,从而达到快速访问的目的。
最简单的CDN网络由一个DNS服务器和几台缓存服务器组成。
当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS系统会最终将域名的解析权交给CNAME指向的CDN专用DNS服务器。
CDN的DNS服务器将CDN的全局负载均衡设备IP地址返回用户。
用户向CDN的全局负载均衡设备发起内容URL访问请求。
CDN全局负载均衡设备根据用户的IP地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,选择的依据有
基于以上分析,区域负载均衡设备会返回一台缓存服务器的IP地址。
全局负载均衡设备会把服务器的IP地址返回给用户。
用户想缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上没有用户想要的内容,而区域均衡设备仍然将它分配给了用户,那么这台服务器就会向它的上级缓存服务器请求内容,直到追溯到源服务器将内容拉到本地。
CDN边缘节点缓存策略因运营商的不同而不同,但一半都会遵循HTTP标准协议。通过HTTP响应头中的Cache-control:max-age的字段来设置CDN边缘节点数据缓存时间。
当客户端向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据未过期,直接将缓存数据返回给客户端;否则CDN节点会向源站发出回源请求,从源站拉去最新数据,更新本地缓存且将新数据返回给客户端。
CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,问用户提供更精细化的缓存管理。
CDN缓存时间会对“回源率”产生直接影响。若CDN缓存时间较短,CDN边缘节点的数据会经常失效,导致频繁回源,增加了源站的负载,同时增大访问延时;若CDN缓存时间太长,会带来数据更新时间慢的问题,开发者需要对特定的业务做特定的数据缓存时间管理。