1:缓存是什么?
首先。看看没有站点没有接入CDN时。用户浏览器与server是怎样交互的:
假设中间加上一层CDN,那么用户浏览器与server的交互例如以下:
client浏览器先检查是否有本地缓存是否过期。假设过期,则向CDN边缘节点发起请求,CDN边缘节点会检測用户请求数据的缓存是否过期。假设没有过期。则直接响应用户请求,此时一个完毕http请求结束;假设数据已经过期。那么CDN还须要向源站发出回源请求(back to the source request),来拉取最新的数据。
2:CDN缓存
浏览器本地缓存失效后。浏览器会向CDN边缘节点发起请求。相似浏览器缓存,CDN边缘节点也存在着一套缓存机制。
3:CDN缓存缺点
CDN的分流作用不仅降低了用户的訪问延时,也降低的源站的负载。但其缺点也非常明显:当站点更新时,假设CDN节点上数据没有及时更新,即便用户再浏览器使用Ctrl +F5的方式使浏览器端的缓存失效,也会由于CDN边缘节点没有同步最新数据而导致用户訪问异常。
4:CDN缓存策略
CDN边缘节点缓存策略因服务商不同而不同。但一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。
当client向CDN节点请求数据时。CDN节点会推断缓存数据是否过期,若缓存数据并没有过期。则直接将缓存数据返回给client。否则。CDN节点就会向源站发出回源请求,从源站拉取最新数据,更新本地缓存,并将最新数据返回给client。
CDN服务商通常会提供基于文件后缀、文件夹多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。
CDN缓存时间会对“回源率”产生直接的影响。
若CDN缓存时间较短,CDN边缘节点上的数据会常常失效,导致频繁回源,添加了源站的负载,同一时候也增大的訪问延时。若CDN缓存时间太长,会带来数据更新时间慢的问题。
开发人员须要增对特定的业务。来做特定的数据缓存时间管理
5:CDN缓存刷新
CDN边缘节点对开发人员是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发人员能够通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。
这样开发人员在更新数据后,能够使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,保证client在訪问时。拉取到最新的数据。