好处和。在本地托管jQuery的陷阱

时间:2010-09-30 15:59:36

标签: javascript jquery jquery-ui cdn

我们目前正在从谷歌CDN中提取jQuery和jQueryUI(以及jQueryUI CSS)库。我喜欢这个,因为我可以致电google.load("jquery", "1");  并且将使用最新的jQuery 1.x.x。

现在我因为安全而在本地拉出库。

我很乐意在当地拉他们,但我想知道还有哪些其他好处和陷阱需要注意?

9 个答案:

答案 0 :(得分:134)

我总是使用Google的CDN(内容分发网络)。但万一它离线了:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>

抓住Google CDN的jQuery并在必要时回退到本地

修改: 如果您不需要支持IE6,并且您的网站使用部分https,您也可以删除http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

答案 1 :(得分:97)

将它们放在CDN上的主要好处是文件可以与从您自己的网站下载的文件并行下载。这减少了每页的延迟。因此,另一方面是本地托管的陷阱 - 延迟增加。主要原因是浏览器的连接数量有限,它们可以同时连接到同一个Web域。在IE6中,这默认为同一域的2个并发连接 - 在IE的所有打开窗口之间共享在IE8 +中它改进了,默认为6,这与FF / Chrome一致,但是,如果你有很多图像并且你没有使用精灵,那么你将会遇到很长的延迟。

使用CDN,我会始终明确设置库版本,而不是获取最新版本。这降低了新版本破坏代码的风险。 jQuery不太可能,但可能。

使用CDN的另一个主要好处是您网站上的流量减少。如果您支付每GB或者您使用的资源有限,则可能会发现当您将部分内容迁移到公共CDN时,整体网站性能会提高并且托管成本会降低。

确保您还阅读了@revaxarts对此问题的其他答案。这是一个非常好的技巧

答案 2 :(得分:20)

其他人已经涵盖了这些好处。缺陷:

  • 如果您只包含来自您自己的服务器的内容,那么这是一台需要运行且不被防火墙阻止的服务器,以使您的网站正常运行。从第三方提取脚本,现在需要运行和解锁的两台服务器才能使您的网站正常工作。

  • 您从中提取<script>的任何网站都可以完全控制用户在您网站上的体验。如果谷歌感到邪恶,他们可以在他们的jQuery副本中加入一些东西来记录你的按键,从你所在的页面窃取个人信息以绑定到他们的网络跟踪数据库,让你发布“我爱谷歌!”评论到每个表格等等。

谷歌可能实际上并没有这样做,但这是一个不受你控制的因素,当然还有其他脚本托​​管服务需要担心的事情。在使用恶意软件加载程序破坏统计脚本之前,曾发生过一些事件。

在包含来自第三方的任何脚本之前 - 甚至在您网站的单个页面上 - 您必须100%信任它们,并使用该主机名上可见的所有用户可访问功能(包括面向网络的管理功能)。

答案 3 :(得分:13)

Google CDN:

  • 缓存,有利于提高性能,更多用户可能拥有它,并且可以并行下载
  • 如果有的话,heaver禁止cdn下降。你被搞砸了。
  • 如果新版本破坏了您现有的插件或网站,您可能会知道它可能为时已晚

本地:

  • 可以在不连接网络的情况下进行开发
  • 除了缩小之外,
  • 仍然可以通过gzipping获得一些性能优势

答案 4 :(得分:11)

我更喜欢使用我的本地版本,因为我无法控制它们将提供什么。 例如,我不希望我的用户受到谷歌分析或任何类似的影响,因为这是我国的法律问题。

答案 5 :(得分:8)

好处:(特别针对谷歌的CDN)

  1. 与您的文件并行下载。其他答案进一步解决
  2. Google的服务器可能能够更快地实际提供内容
  3. 公共库和框架可能已经在用户的计算机上,因为CDN的HTTP缓存在所有站点上都是通用
  4. 您的带宽不必用于提供大型库文件

答案 6 :(得分:3)

使用谷歌的CDN几乎每一种方式都是好事。

性能将得到改善(尽管非常轻微,除非您的网站真的很忙),并且您的服务器必须传输的数据量将会下降(尽管jQuery并不是一个非常重要的下载内容),等等。 / p>

您不想使用它的唯一原因是您不信任Google。通过使用它,您可以有效地向Google提供有关您网站流量配置文件的额外信息窗口,包括您可能不希望公开的网址的知识(例如,您网站的安全区域)。

如果你对安全性偏执,那么这可能足以说服你不要使用它们(毕竟,托管它本身不会让你的网站慢慢爬行),但一般来说大多数人会采取谷歌对他们的网站已经了解得足够多的实用主义观点,即增加这一点并没有太大的区别。

答案 7 :(得分:0)

对我而言,这取决于你希望拥有多少控制权。如果你像我一样,需要在工作和旅行时在当地主人身上发展。将jquery文件置于本地优于将其托管在谷歌或其他地方。

答案 8 :(得分:0)

现在我可能是少数派,但我想除非您确实需要,否则您不想使用CDN。开始使用它的关键因素是:

  • 跨地理用户。如果您在美国托管网站,但拥有大量欧洲用户-CDN将缩短加载时间。
  • 大量的用户和/或大量的内容,因此一台主服务器已经不够。可以想到任何色情视频网站(或Netflix,如果需要的话)。视频流是很重的负载,而CDN将大大减少主服务器上的负载。

但是...问题是这些要点实际上并不适用于全球90%的网站。我敢打赌,您不是拥有全球数百万在线用户的Facebook,也不是拥有每秒数百GB传输量的Pornhub。

如果您的网站是针对您所在城市/国家/地区的用户的,并且一台服务器的容量足以满足您拥有的用户数量-为什么您要CDN?对于您所在城市的用户而言,速度更快,而从本地本地主服务器中获取所有信息则更加简单。


一般来说,它更多是关于CDN的,现在让我更接近有关jQuery或任何其他库的实际问题。

如果您希望您的网站在一年多的时间内保持可访问性且无需维护就可以正常工作-将其放在本地。如今,图书馆正在以一种疯狂的节奏进行更新,您可能不想遵循。而旧版本最终将被删除。而且,整个库都可能死掉(虽然可能不适用于jQuery)。

根据我最近的经验-我在维护的网站上将TinyMCE从3.x.x(2012年)更新为5.x.x(2019年春季)。这个网站已经工作了7年(七年!),这部分逻辑没有任何维护。当时没有“缩小”概念,CDN并不像现在这样普遍。但是,即使它们很常见-您也永远不会知道从现在开始的3-5-10年会发生什么。通常,即使您不维护网站,也希望您的网站保持活跃,不是吗?但是,如果您今天从CDN中提取jQuery,则此链接可能(并且可能会)在5年内失效。

使用CDN和回退到本地版本的解决方案,如@Xaver所建议的,这可能是一个很好的折衷方案。但是...也许只是摆脱了CDN链接? ;)