Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CDN有哪些优化加载静态资源速度的机制? #18

Open
into-piece opened this issue Jan 22, 2020 · 0 comments
Open

CDN有哪些优化加载静态资源速度的机制? #18

into-piece opened this issue Jan 22, 2020 · 0 comments

Comments

@into-piece
Copy link
Owner

into-piece commented Jan 22, 2020

访问网站的基本过程:

  • 用户在自己的浏览器中输入要访问的网站域名。
  • 浏览器向 本地DNS服务器 请求对该域名的解析。
  • 本地DNS服务器中如果缓存有这个域名的解析结果,则直接响应用户的解析请求。
  • 本地DNS服务器中如果没有关于这个域名的解析结果的缓存,则以递归方式向整个DNS系统请求解析,获得应答后将结果反馈给浏览器。
  • 浏览器得到域名解析结果,就是该域名相应的服务设备的 IP地址 。
  • 浏览器向服务器请求内容。
  • 服务器将用户请求内容传送给浏览器。

CDN 用户访问调度流程

  1. 当用户点击网站页面上的内容URL,经过本地DNS系统解析,DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器。
  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。
  3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。
  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容URL,选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。
  5. 基于以下这些条件的综合分析之后,区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的IP地址:
  • 根据用户 IP 地址,判断哪一台服务器距用户最近;
  • 根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;
  • 查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
  1. 全局负载均衡设备把服务器的 IP 地址返回给用户。
  2. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

DNS 服务器根据用户 IP 地址,将域名解析成相应节点的缓存服务器IP地址,实现用户就近访问。使用 CDN 服务的网站,只需将其域名解析权交给 CDN 的全局负载均衡(GSLB)设备,将需要分发的内容注入 CDN,就可以实现内容加速了。

CDN 的核心功能,一个是缓存,一个是回源。

缓存就是说我们把资源复制一份到 CDN 服务器上,回源就是说 CDN 发现自己没有这个资源(一般是缓存的数据过期了),重新向向web 服务器(或者它的上层服务器)重新取这个资源。

CDN中一方面有很多的缓存策略,从而可以提高加载速度。 另一方面CDN有路由算法,可以选择用户访问速度最快的节点进行接入,从而加快RTT(Roud Trip Time)

CDN会挑选最优设备提供服务。可能是Cache最接近用户,或者条件最好的路径。这个过程就叫均衡负载。

@into-piece into-piece mentioned this issue Apr 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant