cdn - 多个 CDN 会加速页面加载吗
问题描述
我注意到 DJI Store 网站使用多个 CDN 域来服务器静态元素。
网页: https ://store.dji.com/?site=brandsite&from=nav
CDN:
https://asset2.djicdn.com/assets/v2/common/14292283_1302296159810439_4324228009709332653_n.jpg https://asset4.djicdn.com/assets/v2/build/app-0f0a05d6b0cd030cf68ca92e67816241.com/ _上传/sku/covers/31314/small_55e19eff-2d6a-4d75-8e63-b9b5822fd298.png
只是想知道使用超过 1 个 CDN 域、更多并行下载的目的是什么?
如果是这样,我应该使用多少个域?
解决方案
这不再是从 CDN 加载资产的推荐方式。最好使用单个 CDN 并使用它加载尽可能多的资源,以便可以重用 HTTP/2 连接并且页面必须创建更少的连接。
回到 HTTP/1.1 时代,在多个主机上加载资源以并行下载是一种常见的做法。这在当时是一种有用的做法,可以显着加快具有更多带宽的用户的丰富网页速度。这种技术被称为域分片。
但是在 HTTP/2 之后,它不再被需要并且被视为一种不好的做法。上面的商店似乎是在 HTTP/1.1 时代构建的,并针对那个时代的浏览器进行了优化。
还有另一个术语“附带域分片”,这意味着 Web 开发实践导致开发人员不必要地依赖越来越多的主机来交付他们的内容。例如,如今的网站从 Google Fonts 加载字体,从一些 javascript CDN 加载公共库,并将其私有内容托管在私有 CDN 上。这需要浏览器打开几个可以避免的不必要的连接,并阻止浏览器利用 HTTP/2 多路复用。但是有一些可能的解决方案,例如PageCDN和EasyFonts,它们可以共同帮助实现可用技术的最大性能,因为它们通过单个 CDN 加载所有页面资源。
如果您想查看附带域分片的实际效果,请查看http://www.piston.rs/dyon-tutorial/的源代码他们正在加载超过 5 个 CDN 的资源,以及它们的私有内容(网站 CSS 和 JS 文件) 仍然需要私有 CDN。
推荐阅读
- arrays - 在 vbscript 函数中扩展数组
- python - Selenium Python - 如果没有包含此类值的属性,如何获取文本字段的当前值?
- angular - Angular:如何从服务共享价值到整个项目 Angular 11?
- c# - 在 .NET Core 中将请求服务对象作为 null 传递
- latex - 如何在乳胶中将图片标题设置为局部小?
- c++ - 没有原子的 C++ 线程安全
- c# - 如何在 C# 中测试内部调用公共实例方法的方法
- android-studio - Android现金:UnsatisfiedLinkError:dlopen失败:找不到符号“pthread_cond_clockwait”
- instagram - Instagram Business Discovery API 无效的 OAuth 访问令牌
- datetime - 如何解析 PRTG 使用的时间戳