哪个更好:公共JavaScriptCDN或自托管组合JavaScript

Which is better: public javascript CDN or self-hosted combined javascript?

本文关键字:组合 JavaScript JavaScriptCDN 更好 公共      更新时间:2023-09-26

我的网页使用了几个JavaScript库,如jquery,jquery-ui,underscore,backbone和其他一些著名的jquery插件。

现在我面临一个两难的境地,我可以:

  1. 使用托管所有这些库的公共 CDN。如果用户使用相同的 CDN 访问了另一个站点,则脚本可能已被缓存。但由于每个库都是独立的,页面需要包含许多脚本标签,因此需要包含许多 http 请求。

  2. 将所有必需的脚本合并为一个(包括我自己的脚本文件)并将其托管在我自己的服务器上。只有一个请求可以完成所有操作,但我无法比 CDN 更快地提供脚本,并且无法利用缓存。

根据您自己的经验,哪个更好?

而且我想估计一下是否有足够的网站使用提到的CDN(如果很多知名网站使用它们,那么脚本被缓存的概率很高),我该如何调查?我尝试在谷歌上搜索脚本 src 属性,但谷歌似乎没有索引它。

如果只使用 1-2 个库,一个好的做法是包括 CDN 版本,并回退到本地版本。这是大多数 HTML 样板/框架使用 .e.g 的做法。

http://html5boilerplate.com/

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="//myserver/js/libs/jquery-1.8.3.min.js"><'/script>')</script>

但是,您正在使用大量库,因此可能存在依赖项,以及页面上它们的特定顺序,其中一些可能不存在于标准 CDN 上,因此无论如何您都必须包含来自服务器的一些 javascript。因此,对于您的情况,更好的选择是将所有 JavaScript 代码很好地组合/版本控制到 1-2 个文件中,例如一个用于库(通常不触及),一个用于您自己的自定义代码(当您对其进行更改时缓存被破坏)。