CDN 的目的之一是将静态资产分发到离用户最近的区域。假设我的服务器位于位置 X,而我的大多数用户位于 Y。但是,距离 Y 最近的 CDN 服务器位于 X。如果服务器与服务器位于同一区域,那么使用 CDN 有什么优势?与仅将图像托管在服务器本身上而不是将其放入服务器相比,有什么区别。
答案1
除了地理分布之外,CDN 还有以下几个好处:
- 无 Cookie 的域:如果您的静态内容位于 CDN 上,那么您的用户就不会在静态文件请求中发送您网站的 cookie,这将意味着 CSS、JS 和图像的请求和响应时间更快。
- 并行下载。浏览器通常一次只在每个主机上下载两个项目。通过将内容推送到 CDN,浏览器将为您现在拥有的每个主机名打开更多并发下载。
- 速度。CDN 经过优化,可以快速发送静态内容,这通常比尝试通过同时尝试生成动态内容的通用 Web 服务器发送静态内容要好。
- 分布式负载。派生整个 Apache 进程来为 favicon.ico 提供服务有点浪费。
对于前两点,您应该注意到,设置主服务器以在任意数量的无 cookie 子域上发送静态内容非常容易。您还应该注意到,将静态内容分散到太多域上可能会破坏您从并行下载中获得的性能提升,因为 DNS 查找需要往返。对于第三点和第四点,它们只有在主服务器负载很大时才会真正有帮助。
在我看来,如果您没有遇到特定的性能问题,那么在这种情况下 CDN 代表了微优化,不必为此烦恼。我只需设置主服务器来提供来自几个子域的静态内容,然后就大功告成了。