将CDN用于js和类似资源与本地资源更好吗?[已关闭]

2022-08-30 13:18:06

我有一个习惯,将所有内容存储在本地,并确保我的网站即使在没有互联网连接的本地服务器上也能够运行。从那以后,这一直是我的原则,以便我的网站可以离线独立运行,尤其是用于开发阶段,其中我的页面刷新速度非常快,即使没有互联网,我也可以继续开发我的网站。

因此,在我所有的Web应用程序和站点中,我总是下载我需要的包和库,并在本地链接到它们,以获取包含和不包含的内容。

我知道越来越多的人通过公共CDN和其他东西链接/导入库,所以我想知道这样做是否有任何真正显着的好处?

我已经确定了显而易见的(随时纠正我):

PRO LOCAL - 更快的开发体验 - 对可能中断的其他服务器的零依赖性 - 更快的用户体验(?),因为网站页面可以快速执行处理同一服务器上的文件/库(本地化)

PRO CDN - 节省网络空间(但在当今世界,这似乎微不足道..在典型的站点中,您只能节省10-20mb的空间,而在当今的宏伟计划中,廉价服务器和所有空间是什么)

  • 服务器上的更轻(?)=我实际上想知道这一点。从 CDN 加载是否会在服务器的处理器 RAM 和 i/o 磁盘上更轻,或者会更糟,因为执行文档(例如 index.php)通过占用线程/mem/cpu 周期来完成该文档需要更长的时间?

谢谢大家。


答案 1

CDN 的好处不是(也不应该)适合您。它是为您的客户/用户准备的。使用CDN文件 - 特别是对于广泛使用的库,如jQuery(或任何其他大型库) - 意味着它们将从附近的物理位置接收文件的缓存副本。在大多数情况下,对大型库使用流行的CDN意味着用户之前也从其他人的站点下载了该资源,因此该文件将缓存在其浏览器中。

这有助于减少用户下载文件所花费的时间。这与你的服务器负载或你的开发能力无关,而是在最小的边缘情况下。首先考虑您的用户!

对大多数静态文件使用 CDN 对您的用户来说非常明显。


更新 2022-01-25

值得注意的是,虽然这在很长一段时间内都是如此,但事实并非如此。使用 CDN 仍然有真正的好处(例如:文件从物理上靠近使用最终用户的位置提供 - 在大型的全球分布式 CDN 上),但跨域资源缓存不再是一种好处。

@x-yuri在2021年底注意到了这一点所有主要浏览器都在2020年之前实现了缓存分区。

使用CDN仍然是有益的,并且仍然有利于您的用户,但好处是减少了地理位置服务器的延迟,而不是由于热缓存命中而导致的一般性能。


答案 2

每个HTTP / HTTPS请求都是Web服务器的努力。对JS,CSS或任何其他静态文件的请求将被重定向到通常具有分布式,快速和稳定架构的CDN。

如果您正在管理一个Web应用程序或网站,其中包含执行许多请求的页面,并且您收到了大量用户,则每秒的HTTP请求数可能会急剧增加;如果您的Web服务器开始缓慢响应,那么拆分请求将是一个好主意,CDN非常擅长管理静态内容。

基本上执行调整,服务器可以扩展较少并节省资金。

如果您没有遇到性能不足的问题,则可能不需要使用CDN。


推荐