当用户访问一个网站时,客户端直接从源站点获取数据,当服务器访问量大时会影响访问速度,影响用户体验,且无法保证客户端与源站点间的距离足够短,适合传输数据。CDN(内容分发网络),解决的正是如何将数据快速可靠地从源站点传递到客户端。通过数据分发,用户可以从一个距离较近的服务器获取数据,而不是源站点,从大达实现快速访问,减少源站点负载均衡的压力。
用户第一次访问网站后,网站的一些静态资源如图片等会被下载到本地,作为缓存,当用户第二次访问该网站的时候,浏览器就会从缓存中加载资源,不用向服务器请求资源,从而提高了网站的访问速度。若使用了CDN缓存,当浏览器本地缓存的资源过期后,浏览器不是直接向源站点请求资源,而是向CDN边缘请求资源。若CDN中的缓存过期,那就由CDN边缘节点向源站点发出回源请求来获取最新资源。
CDN节点缓存机制在不同服务商中是不同的,但一般都遵循HTTP协议,通过http响应头中的Cache-Control:max-age的字段来设置CDN节点文件缓存时间。当客户端向CDN节点请求数据时,CDN会判断缓存数据是否过期,若没有过期,则直接将缓存数据返回给客户端,否则就向源站点发出请求,从源站点拉取最新数据,更新本地缓存,并将最新数据返回给客户端。CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。CDN缓存时间会对“回源率”产生直接的影响,若CDN缓存时间短,则数据经常失效,导致频繁回源,增加了源站的负载,同时也增大了访问延时;若缓存时间长,数据更新时间慢,因此需要针对不同的业务需求来选择特定的数据缓存管理。