我见过很多网络程序员,包括来自 google 的 ajax api 库的 Jquery 库。除了节省“一些”空间之外,不在我们的服务器中托管这些库有什么真正的优势吗?这样做是个好习惯吗?
4 回答
企业应使用 CDN
的 5 个理由 使用内容交付网络的 7 个理由
CDN 是内容交付网络(托管库)
尽管您应该始终拥有本地缓存,以防远程存储失败。(HTML5 Boilerplate 很好地证明了这一点):
<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if necessary -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
让 Google 为您托管 API 有几个好处。
- 降低延迟
- 增加并行度
- 更好的缓存
降低延迟
CDN(内容交付网络的缩写)将您的静态内容分发到不同物理位置的服务器上。当用户的浏览器解析这些文件的 URL 时,他们的下载将自动以网络中最近的可用服务器为目标。
在 Google 的 AJAX 库 CDN 的情况下,这意味着任何不在您服务器附近的用户将能够比您强制他们从任意位置的服务器下载 jQuery 更快。
与 Google 相媲美的 CDN 服务屈指可数,但免费的价格难以超越!仅此一项好处就可以决定问题,但还有更多。
增加并行度
为了避免不必要的服务器超载,浏览器限制了可以同时建立的连接数。根据哪个浏览器,此限制可能低至每个主机名两个连接。
使用 Google AJAX 库 CDN 消除了对您网站的一个请求,允许并行下载更多本地内容。对于拥有六个并发连接浏览器的用户来说,这并没有太大的区别,但对于那些仍在运行只允许两个浏览器的用户来说,区别是显而易见的。
更好的缓存
使用 Google AJAX 库 CDN 的潜在最大好处是您的用户可能根本不需要下载 jQuery。
无论您的网站优化得多么好,如果您在本地托管 jQuery,那么您的用户必须至少下载一次。您的每个用户可能已经在他们的浏览器缓存中拥有数十个相同的 jQuery 副本,但是当他们访问您的站点时,这些 jQuery 副本会被忽略。
但是,当浏览器看到对 CDN 托管的 jQuery 副本的引用时,它会理解所有这些引用确实引用了完全相同的文件。由于所有这些 CDN 引用都指向完全相同的 URL,浏览器可以相信这些文件确实是相同的,并且不会浪费时间重新请求已缓存的文件。因此,浏览器能够使用缓存在磁盘上的单个副本,而不管 CDN 引用出现在哪个站点上。
这会产生强大的“跨站点缓存”效果,所有使用 CDN 的站点都可以从中受益。由于 Google 的 CDN 为文件提供标题,试图将文件缓存长达一年,因此这种效果确实具有惊人的潜力。由于 Internet 上数以千计的流量最大的网站已经使用 Google CDN 来提供 jQuery,因此您的许多用户很可能在访问使用 CDN 的网站时永远不会对 jQuery 发出单个 HTTP 请求。
即使有人使用相同的 Google 托管版本的 jQuery 访问数百个站点,他们也只需要下载一次!
临:
您节省了流量。jQuery 和公司。能够在交通上占用大量空间。
谷歌和公司。创建 CDN 是为了完成这项工作。如果有人能够比这样的网络更快地提供此类内容。
长期以来,浏览器无法从一个域加载两个以上的 Javascript 文件。如果您使用来自 google.com 的 jQuery,您的浏览器将能够同时加载其他应用程序特定的文件。如果今天这很重要,那就是问题
许多人使用 Google 或 Microsoft 服务或访问由其 jQuery 版本链接的网站。这意味着,您的浏览器很有可能已经在某处缓存了 jQuery——加载时的等待时间更短!
反对:
- 如果您没有互联网连接,则无法使用它(仅限本地局域网应用程序)
访问您网站的用户更有可能已经缓存了 Google 的版本,而不是您自己托管的版本。(更快,可能)
你不必主持它
您不需要处理缓存它(除非您使用后备方法并且 Google 的版本已关闭)
如果用户在欧洲而您的服务器在 Fargo,他们很可能会将 Google 的版本从更近的服务器上拉下来(可能更快)
节省您的带宽(付款时每一点都很重要)
我建议您查看Html5Boilerplate,当您无法访问 Google 的 CDN 时,他们已经实施了一个很好的后备方法。