服务器其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 服务器其它 > CDN的加速缓存与回源

CDN的加速缓存原理与回源机制解析

投稿:yin

CDN 是一个分布式的内容分发网络,当用户请求一个网络资源时,用户请求的是 CDN 提供的资源,和域名系统类似,当用户请求一个资源时,首先会接触到一个类似域名系统中目录的服务,这个服务会告诉用户究竟去哪个 IP 获取这个资源,

CDN 是一个分布式的内容分发网络。当用户请求一个网络资源时,用户请求的是 CDN 提供的资源。和域名系统类似,当用户请求一个资源时,首先会接触到一个类似域名系统中目录的服务,这个服务会告诉用户究竟去哪个 IP 获取这个资源。事实上,很多大型的应用,会把 DNS 解析作为一种负载均衡的手段。当用户请求一个网址的时候,会从该网站提供的智能 DNS 中获取网站的 IP。

CDN 是什么?

CDN加速的原理基于两个关键概念:缓存和就近访问。

1. 缓存:CDN节点会将网站的静态资源(如图片、CSS、JavaScript等)复制到各个服务器上,并将其存储在高速缓存中。当用户发起请求时,CDN会先检查是否有缓存的副本。如果有,CDN会直接将资源返回给用户,而无需向原始服务器发出请求。

2. 就近访问:CDN网络由分布在全球各地的节点组成。当用户发起请求时,CDN会根据用户的地理位置,将请求路由到距离用户最近的节点。这样做可以减少数据传输的距离和网络延迟,提高网站的加载速度。

CDN缓存

当用户请求一个静态资源的时候,首先会触发域名系统的解析。域名系统会将解析的责任交由 CDN 提供商来处理,CDN 的智能 DNS 服务会帮助用户选择离自己距离最近的节点,返回这个节点的 A(或 AAAA)记录。然后客户端会向 CDN 的资源节点发起请求,最终获得资源。

在上面整个过程当中,CDN 的智能 DNS 还充当了负载均衡的作用。如果一个节点压力过大,则可以将流量导向其他的节点。

CDN往往被用来存放静态资源。所谓静态资源就像JS CSS 图片等不需要业务服务器进行计算得到的资源。而动态资源, 顾名思义就是i需要后端实时动态生成的资源, 较为常见的就是JSP ASP 或者依赖服务端渲染得到的HTML页面。

CDN 回源

CDN 回源就是 CDN 节点到源站请求资源,重新设置缓存在 CDN 的设计当中,CDN 实际上提供的是数据的缓存。而原始数据,则由服务的提供者提供。

用户的请求先到达缓存层,如果缓存被穿透,才到达最终的存储层。缓存的设计必须是分布式的,因为绝大多数的资源使用都会发生在缓存上,只有极少数的请求才会穿透到底层的存储。通常这种设计,我们期望缓存层至少需要帮挡住 99% 的流量。既然缓存层能挡住 99% 的流量,那么实际的数据存储就可以交由源站点完成。

源站内容有更新的时候,源站主动把内容推送到CDN节点。常规的CDN都是回源的。即:当有用户访问某一个URL的时候,如果被解析到的那个CDN节点没有缓存响应的内容,或者是缓存已经到期,就会回源站去获取。如果没有人访问,那么CDN节点不会主动去源站拿的。

回源域名一般是cdn领域的专业术语,通常情况下,是直接用ip进行回源的,但是如果客户源站有多个ip,并且ip地址会经常变化,对于cdn厂商来说,为了避免经常更改配置(回源ip),会采用回源域名方式进行回源,这样即使源站的ip变化了,也不影响原有的配置。

CDN 回源有 3 种情况,一种是 CDN 节点没有对应资源时主动到源站获取资源;另一种是缓存失效后,CDN 节点到源站获取资源;还有一种情况是在 CDN 管理后台或者使用开放接口主动刷新触发回源。

总结

CDN适用于静态技术,比如图片,游戏下载,视频等。缺点:CDN用到的是缓存技术,加速的是网站的静态、公用部分。如果是动态网站,不能缓存,每次都要回源服务器访问,用了CDN反而增加了一个环节,不好。

到此这篇关于CDN的加速缓存原理与回源机制解析的文章就介绍到这了,更多相关CDN的加速缓存与回源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文