前言这段时间在工作中遇到CDN导致的图片资源加载错误。在排查的过程中,我发现自己对CDN的理解很片面,仅仅停留在它能够缓存静态资源,提高访问速度的理解上。所以我觉得深入了解它还是很有必要的。什么是CDN?CDN的全称是ContentDeliveryNetwork,是指通过互联网相互连接的计算机网络系统。它使用离每个用户最近的服务器将音乐、图片、视频、应用程序和其他文件发送给用户,从而为用户提供高性能、可扩展和低成本的网络内容交付。————维基百科CDN的基本工作流程最简单的CDN网络是由一台CDN服务器和多台缓存服务器组成。主要工作过程是:当用户点击网站页面的内容URL时,本地DNS系统解析后,DNS系统最终将域名的解析权交给CNAME指向的CDN专用DNS服务器.DN的DNS服务器返回CDN全局负载均衡设备的IP地址给用户。用户向CDN的全局负载均衡设备发起内容URL访问请求。CDN全局负载均衡设备根据用户的IP地址和用户请求的内容URL选择用户所属区域的区域负载均衡设备,告知用户向该设备发起请求。区域负载均衡器会选择合适的缓存服务器为用户提供服务。选择依据包括:根据用户的IP地址判断距离用户最近的服务器;根据用户请求的URL中携带的内容名称,判断哪个服务器离用户最近。一台服务器有用户需要的内容;查询每台服务器当前的负载情况,判断哪台服务器还有服务能力。区域负载均衡设备根据以上条件综合分析后,将缓存服务器的IP地址返回给全局负载均衡设备。全局负载均衡设备将服务器的IP地址返回给用户。用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户需要的内容传送给用户终端。如果这台缓存服务器上没有用户想要的内容,但区域平衡器还是分配给了用户,那么这台服务器就会向它的上级缓存服务器请求内容,直到可以追溯到它的源服务器。该网站将内容拉到本地。需要CDN的根本原因是访问速度,它对互联网应用的用户体验影响巨大,甚至是各种指标(DAU、PV、UV、收入……),这是任何互联网公司都渴望的自己的站点访问速度更快,用户体验更好。HTTP传输延迟对网页访问速度影响很大(HTTPS比较耗时),在大多数情况下起着决定性的作用,这是由TCP/IP协议的一些特性决定的。要想提高访问速度,最直接的办法就是在不同的地方多部署几台服务器,让当前的访问用户离服务器更近一些。但是多设置几台服务器会带来其他一些乱七八糟的问题(异地部署、访问一致性、服务管理、成本较高等)。这时候CDN的作用就体现出来了。CDN本身是一项公共服务。它有许多位于不同地区并连接到不同运营商的服务器。所谓利用CDN,本质上就是利用CDN作为网站的门面。用户访问CDN服务器,而不是直接访问网站。由于CDN内部对TCP、静态资源的缓存和预取的优化,用户访问CDN时,会被智能分配到就近的节点,减少了很多延迟,大大提高了访问速度。最后,掌握CDN工作流程或基本原理的知识对于一个前端来说甩锅更方便。当然,最重要的是解决工作中的问题。感谢知乎深入解析关于CDN的答案:CDN内容分发网络技术原理维基百科、百度百科
