将 CDN 用于 js 和类似资源与本地相比更好吗?
Is it better to use CDN for js and similar resources vs local?
我习惯将所有内容都存储在本地,并确保即使在没有互联网连接的本地服务器上,我的网站也能够 运行。这一直是我的原则,这样我的网站就可以 运行 离线独立运行,尤其是在开发阶段,我的页面刷新速度非常快,即使没有互联网我也可以继续开发我的网站。
因此,在我所有的 Web 应用程序和网站中,我总是下载我需要的包和库,并在本地 link 向它们下载包含和不包含的内容。
我知道越来越多的人 link 通过 public CDN 和其他东西 linking / 导入库,所以我想知道这样做是否有任何真正显着的好处?
我已经确定了明显的(随时纠正我):
专业本地
- 更快的开发体验
- 对可能中断的其他服务器的零依赖
- 更快的用户体验 (?) 因为网站页面执行速度很快 files/libraries 在同一台服务器上已经(本地化)
PRO CDN
- 节省网络 space(但在当今世界,这似乎微不足道.. 在一个典型的网站中,您只能节省 10-20mb 的价值 space,而这在宏伟的计划中是什么现在的东西和便宜的服务器等等)
- 服务器上的打火机 (?) = 我真的很想知道这个。从 CDN 加载服务器的处理器 ram 和 i/o 磁盘会更轻,还是会更糟,因为执行文档(例如 index.php)占用 threads/mem/cpu 需要更长的时间才能完成] 周期?
谢谢大家。
每个 HTTP/HTTPS 请求都是 Web 服务器的一项工作。
对 JS、CSS 或任何其他静态文件的请求将被重定向到通常具有分布式、快速和稳定架构的 CDN。
如果您管理的 Web 应用程序或网站包含执行许多请求的页面并且您正在接收大量用户,则每秒的 HTTP 请求数可能会急剧增加;如果您的 Web 服务器开始响应缓慢,那么拆分请求是个好主意,CDN 非常擅长管理静态内容。
基本上是调优,服务器规模可能会小一些,省钱。
如果您没有遇到性能不足的问题,也许您不需要使用 CDN。
CDN 的好处不是(也不应该)适合您。它适用于您的客户/用户。使用 CDN 文件——尤其是对于广泛使用的库,如 jQuery(或任何其他大型库)——意味着他们将从附近的物理位置接收文件的缓存副本。在大多数情况下,为大型图书馆使用流行的 CDN 意味着用户之前还下载了该资源 - 从 其他人的站点 - 因此文件将缓存在他们的浏览器本地。
这有助于减少用户花在下载文件上的时间。这与您的服务器负载或您的开发能力无关,除了最小的边缘情况。首先考虑您的用户!
对大多数静态文件使用 CDN 对您的用户来说绝对更好。
更新 2022-01-25:
值得注意的是,虽然这在很长一段时间内都是正确的,但实际上已经不是这样了。使用 CDN 仍然有真正的好处(例如:在大型、全球分布的 CDN 上,从物理上靠近消费最终用户的位置提供文件),但跨域资源缓存不再是一个好处。
@x-yuri near the end of 2021, and all the major browsers implemented cache partitioning no later than 2020.
使用 CDN 仍然是有益的,它仍然是为了您的用户的利益,但好处是减少了地理定位服务器的延迟,而不是由于热缓存命中而导致的一般性能。
我习惯将所有内容都存储在本地,并确保即使在没有互联网连接的本地服务器上,我的网站也能够 运行。这一直是我的原则,这样我的网站就可以 运行 离线独立运行,尤其是在开发阶段,我的页面刷新速度非常快,即使没有互联网我也可以继续开发我的网站。
因此,在我所有的 Web 应用程序和网站中,我总是下载我需要的包和库,并在本地 link 向它们下载包含和不包含的内容。
我知道越来越多的人 link 通过 public CDN 和其他东西 linking / 导入库,所以我想知道这样做是否有任何真正显着的好处?
我已经确定了明显的(随时纠正我):
专业本地 - 更快的开发体验 - 对可能中断的其他服务器的零依赖 - 更快的用户体验 (?) 因为网站页面执行速度很快 files/libraries 在同一台服务器上已经(本地化)
PRO CDN - 节省网络 space(但在当今世界,这似乎微不足道.. 在一个典型的网站中,您只能节省 10-20mb 的价值 space,而这在宏伟的计划中是什么现在的东西和便宜的服务器等等)
- 服务器上的打火机 (?) = 我真的很想知道这个。从 CDN 加载服务器的处理器 ram 和 i/o 磁盘会更轻,还是会更糟,因为执行文档(例如 index.php)占用 threads/mem/cpu 需要更长的时间才能完成] 周期?
谢谢大家。
每个 HTTP/HTTPS 请求都是 Web 服务器的一项工作。 对 JS、CSS 或任何其他静态文件的请求将被重定向到通常具有分布式、快速和稳定架构的 CDN。
如果您管理的 Web 应用程序或网站包含执行许多请求的页面并且您正在接收大量用户,则每秒的 HTTP 请求数可能会急剧增加;如果您的 Web 服务器开始响应缓慢,那么拆分请求是个好主意,CDN 非常擅长管理静态内容。
基本上是调优,服务器规模可能会小一些,省钱。
如果您没有遇到性能不足的问题,也许您不需要使用 CDN。
CDN 的好处不是(也不应该)适合您。它适用于您的客户/用户。使用 CDN 文件——尤其是对于广泛使用的库,如 jQuery(或任何其他大型库)——意味着他们将从附近的物理位置接收文件的缓存副本。在大多数情况下,为大型图书馆使用流行的 CDN 意味着用户之前还下载了该资源 - 从 其他人的站点 - 因此文件将缓存在他们的浏览器本地。
这有助于减少用户花在下载文件上的时间。这与您的服务器负载或您的开发能力无关,除了最小的边缘情况。首先考虑您的用户!
对大多数静态文件使用 CDN 对您的用户来说绝对更好。
更新 2022-01-25:
值得注意的是,虽然这在很长一段时间内都是正确的,但实际上已经不是这样了。使用 CDN 仍然有真正的好处(例如:在大型、全球分布的 CDN 上,从物理上靠近消费最终用户的位置提供文件),但跨域资源缓存不再是一个好处。
@x-yuri
使用 CDN 仍然是有益的,它仍然是为了您的用户的利益,但好处是减少了地理定位服务器的延迟,而不是由于热缓存命中而导致的一般性能。