使用单个CDN导入所有内容是否有好处?

3

从同一个CDN导入所有库有什么好处吗?例如,使用这样的导入列表从cdnjs.cloudflare.com获取所有库:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js" integrity="sha512-IsNh5E3eYy3tr/JiX2Yx4vsCujtkhwl7SLqgnwLNgf04Hrt9BT9SXlLlZlWx+OK4ndzAoALhsMNcCmkggjZB1w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/aos/2.3.4/aos.js" integrity="sha512-A7AYk1fGKX6S2SsHywmPkrnzTZHrgiVT7GcQkLGDe2ev0aWb8zejytzS8wjo7PGEXKqJOrjQ4oORtnimIRZBtw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

比起从各种CDN导入它们,更快的方式是这样:
<script src="https://code.jquery.com/jquery-3.6.3.min.js"integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU="crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/magnific-popup.js/1.1.0/jquery.magnific-popup.min.js" integrity="sha512-IsNh5E3eYy3tr/JiX2Yx4vsCujtkhwl7SLqgnwLNgf04Hrt9BT9SXlLlZlWx+OK4ndzAoALhsMNcCmkggjZB1w==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>

由于这个项目的导入列表并不特别大,因此我的测试结果没有显示出明显的差异。我认为答案也取决于您如何托管应用程序,但我不确定如何进行测试。

我不太确定如何精确地测试性能。如果有人对准确测试和比较的方法有任何想法,我会非常感兴趣!

提前感谢任何意见!


1
不太可能有速度提升。可以考虑不要把所有的鸡蛋放在一个篮子里,但如果 jQuery CDN 崩溃了,那么依赖于 jQuery 的其他库也将无法工作。 - mplungjan
1
这将需要更少的DNS请求...但大概只有这些。 - Bergi
1
答案在很大程度上取决于所使用的HTTP版本和请求的其他资源数量。作为一个简单的基准测试,您可以使用“time curl -o /dev/null --parallel --http1.1 https://.../jquery.min.js https://.../jquery.magnific-popup.min.js https://.../aos.js”并将其与“--http2”和“--http3”的时间进行比较。 - Botje
我相信Cloudflare支持HTTP/3已经有一段时间了,如果我没记错的话,这意味着真正的多路复用和单个共享连接,因此我期望仅使用(例如)Cloudflare托管的资源实际上会有一些明显的好处(尽管我在这方面不是专家)。 - Kaiido
1个回答

1

简短回答: 是的, 有益处,但通常不会很大。

详细解释: 每次使用CDN都需要建立另一个连接,而且在大多数情况下还需要协商新的TLS连接。对于高速互联网连接和较现代的设备,这几乎不会被注意到,但在不稳定的连接(例如在地铁上使用手机)或旧的低端设备上可能会更明显。

这也是一个安全方面的问题。如果你有多个CDN,其中一个被攻击传递恶意代码,则比仅从单个CDN加载更容易受到威胁(尽管如果那个CDN被攻击,那么你当然就没有运气了)。

因此,虽然使用多个CDN不算是一个很大的问题,但如果可以避免,则应该避免。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接