你从哪里包含 jQuery 库?谷歌JSAPI?CDN?

IT技术 javascript jquery ssl google-ajax-libraries
2021-02-07 11:45:08

有几种方法可以包含 jQuery 和 jQuery UI,我想知道人们在使用什么?

  • 谷歌JSAPI
  • jQuery 的网站
  • 您自己的站点/服务器
  • 另一个 CDN

我最近一直在使用Google JSAPI,但发现设置SSL连接需要很长时间,甚至只能解析google.com。我一直在为 Google 使用以下内容:

<script src="https://www.google.com/jsapi"></script>
<script>
google.load('jquery', '1.3.1');
</script>

我喜欢使用 Google 的想法,以便在访问其他站点时缓存它并节省我们服务器的带宽,但如果它一直是站点的缓慢部分,我可能会更改包含。

你用什么?你有什么问题吗?

编辑:刚刚访问了 jQuery 的网站,他们使用以下方法:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

Edit2:这是我去年没有任何问题地包含 jQuery 的方式:

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

不同之处在于删除了http:. 通过删除它,您无需担心在 http 和 https 之间切换。

6个回答

毫无疑问,我选择让 JQuery 由 Google API 服务器提供服务。我没有使用 jsapi 方法,因为我没有利用任何其他 Google API,但是如果它改变了,那么我会考虑它......

第一: Google api 服务器分布在世界各地,而不是我的单个服务器位置:更近的服务器通常意味着访问者的响应时间更快。

第二:许多人选择在 Google 上托管 JQuery,因此当访问者访问我的网站时,他们可能已经在其本地缓存中拥有 JQuery 脚本。预先缓存的内容通常意味着访问者的加载时间更快。

第三:我的网络托管公司向我收取使用的带宽费用。如果访问者可以在其他地方获得相同的文件,那么每个用户会话消耗 18k 是没有意义的。

我了解我对 Google 提供正确的脚本文件以及在线和可用的部分信任。到目前为止,我还没有对使用 Google 感到失望,并且会继续这种配置,直到它变得有意义为止。

值得指出的一件事...如果您的网站上混合了安全和不安全的页面,您可能希望动态更改 Google 源以避免在安全页面中加载不安全内容时看到的常见警告:

这是我想出的:

<script type="text/javascript">
    document.write([
        "\<script src='",
        ("https:" == document.location.protocol) ? "https://" : "http://",
        "ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>" 
    ].join(''));
</script>

2010 年 9 月 8 日更新- 提出了一些建议,通过删除 HTTP 和 HTTPS 并简单地使用以下语法来降低代码的复杂性:

<script type="text/javascript">
    document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>");
</script>

此外,如果您想确保加载了最新的 jQuery 库的主要版本,您还可以更改 url 以反映 jQuery 主版本号:

<script type="text/javascript">
    document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'>\<\/script>");
</script>

最后,如果您不想使用 Google 并且更喜欢 jQuery,您可以使用以下源路径(请记住,jQuery 不支持 SSL 连接):

<script type="text/javascript">
    document.write("\<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'>\<\/script>");
</script>
另请记住,Google 将使用它来跟踪用户访问的网站。因此,如果您正在制作一个需要注意隐私的网站,那么托管几个小文件对于隐私来说是一个很小的代价。
2021-03-20 11:45:08
有趣的想法......但是如果你打算使用 DNS 中毒来劫持 JQuery 负载,为什么不劫持整个站点请求呢?或者谷歌分析脚本怎么样?
2021-03-22 11:45:08
我同意您的所有三个原因,这就是为什么我在我的生产站点上包含来自 Google 的 jquery。而不是 SSL 页面的 js 动态注入,我只是在没有指定协议的脚本标签中引用 url。对我来说似乎工作正常。<script src="//ajax.google..."></script>
2021-03-23 11:45:08
我看不到document.write()正在使用什么?一个简单<script src="..."></script>的可以放在标题中。 →@Dscoduc:←它不会更快,它只会带走那个警告信息。如果您的站点使用安全 https 并且您从非编码内容(例如http://googleapis)中提取,那么您将收到该警告消息。如果您只使用 http 但链接到https://googleapis,那么速度会更快一些,“安全”编码会产生一些开销。因此,链接到http://googleapis会快一点。
2021-04-04 11:45:08
我也同意一切,除了为了简化事情,我使用这种格式:<script src="//ajax.google..."></script>。这样我就不用担心 http 或 https 了。感谢亚伦·瓦格纳 (Aaron Wagner)。
2021-04-05 11:45:08

您可能希望在外部服务器上托管的原因之一是解决浏览器对特定服务器的并发连接的限制。

但是,鉴于您使用的 jQuery 文件可能不会经常更改,浏览器缓存将启动并使这一点在大多数情况下没有实际意义。

将其托管在外部服务器上的第二个原因是降低到您自己服务器的流量。

但是,考虑到 jQuery 的大小,它可能只是您流量的一小部分。您可能应该尝试优化您的实际内容。

另一个原因是用户的缓存中已经有来自 google 的 jquery,所以他们甚至可能不需要在他们一次访问您的网站时下载它
2021-04-05 11:45:08

jQuery 1.3.1 min 大小仅为 18k。我不认为在初始页面加载时询问太多。之后它会被缓存。结果,我自己主持。

我的观点是,如果您的访问者只看一页,这只是一个问题。如果您的个人资料较少访问者和多个页面浏览量,那么在每个访问者的页面浏览量之间分布时开销最小。回访者同上。
2021-03-15 11:45:08
除非您的网站绝对很小,否则 18k 将始终是您流量的一小部分。
2021-03-21 11:45:08
基于你陈述的理由,我恭敬地不同意。如果您获得大量流量,那么每个会话 18k 可以迅速加起来相当大的流量。特别是如果您的网络托管按使用的带宽收费...
2021-04-06 11:45:08

如果你想使用谷歌,直接链接可能react更快。每个库都为直接文件列出了路径。这是jQuery路径

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>

只需重新阅读您的问题,是否有使用 https 的原因?这是谷歌在他们的例子中列出的脚本标签

<script src="http://www.google.com/jsapi"></script>
代码来自的站点完全是 SSL——极其安全的联系信息。
2021-03-16 11:45:08
如果您完全关心用户的安全,请始终对 javascript 使用 HTTPS。如果没有 HTTPS,中间人 (MITM) 很容易将这些请求与您打算发送给人们的 javascript 一起提供漏洞利用。将公共 wifi、被黑的家庭路由器等视为可能的 MITM 位置。看看所有那些 pwn-to-own 比赛:他们总是利用浏览器来进入。
2021-03-17 11:45:08
https 站点上的 http 链接很烦人,因为 IE(至少在默认情况下)会用烦人的“此站点包含安全和不安全内容的混合内容”来使您烦恼。确认框。
2021-03-21 11:45:08
您的所有内容都是基于 https 的,还是仅部分内容?
2021-03-26 11:45:08
使用 HTTPS 因为网站是 HTTPS,所以有点不得不。
2021-04-10 11:45:08

我不希望我开发的任何公共站点依赖于任何外部站点,因此,我自己托管 jQuery。

当其他网站(Google、jquery.com 等)出现故障时,您是否愿意让您的网站中断?减少依赖是关键。

我把用户体验(快速加载时间)放在那里,减少了依赖。
2021-03-14 11:45:08
嗯...slacy 正在使用 Google Analytics?他不是刚刚说他不希望他开发的任何公共站点依赖于外部站点吗?;-)
2021-03-18 11:45:08
@slacy 嘿,您的网站已关闭!实际上是jk,但我确实注意到您正在使用谷歌分析并且在开始而不是结束时使用他们的脚本 - 如果谷歌速度很慢,这会稍微减慢您的网站速度
2021-04-01 11:45:08
哇,伙计们,那里有一些严厉的评论。:) 是的,我确实在我的个人博客上使用了 Analytics,但这不是一个产生收入的生产网站,所以我认为它真的很好。我确信我的网站每年都会关闭很多天。请记住,您为个人网站所做的和为工作所做的不同
2021-04-02 11:45:08
使用本地副本还有其他充分的理由:谷歌在伊朗、中国等许多国家经常被屏蔽。这意味着超过 10 亿人将无法访问。
2021-04-02 11:45:08