一些大型公司在其 CDN(内容分发网络)上提供 jQuery 的副本。最著名的是 Google,还有 Microsoft 和 jQuery 本身。许多人对此表示赞同,因为它可以节省带宽,下载速度更快,甚至在使用相同脚本的不同网站之间跳转时保持缓存。
不过,总会有一丝疑虑,那就是这些大型公司 CDN 的脚本可能出现问题,导致脚本不可用(这种情况确实会发生)。使用您自己的网站更可靠,因为如果他们正在加载您的网页,那么您的服务器就能正常运行,并且可以很好地提供脚本,尽管没有 CDN 的优势。
因此,最好的解决方案可能是使用两种方法!首先使用 CDN,如果失败,则加载本地副本。以下是一种技术
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/js/jquery-1.4.2.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
伙计,你读懂了我的想法,我今天一直在寻找这个!
谢谢!
安全永远不嫌多 :)
非常酷!我认为所有网站都应该使用这种“解决方案”。
很棒的解决方案!我一直都在寻找这个 :)
嗯……我总是担心“热链接”的 js 文件由于某种原因变得不可用。托管我自己的脚本似乎更安全。不错的解决方案。
您总是能在恰当的时间发布重要的文章!谢谢。
您如何设置多个备份?如果您想要 3 或 4 个备份,是否只需使用更多 if 语句?我认为应该有一种更有效的方法来检查,直到找到一个有效的备份为止。
我认为,多个备份(其中“1”是您拥有的本地副本)没有意义。
让客户端进行多次连接并失败等待时间比只尝试从 1 个 CDN 加载并回退到本地要慢得多。
也许是因为我在大洋彼岸,但我确实看到过 CDN 加载速度很慢的情况。响应超时并切换到本地需要多长时间?我应该在多少毫秒后强制超时?这是如何工作的?
另外,为什么不简单地
!window.jQuery && document.write('')
糟糕
!window.jQuery && document.write('<script src="js/jquery-1.4.2.min.js"><\/script>')
只是好奇,如果第一个 CDN 失败,您是否可以从第二个 CDN 加载 jQuery?例如,将 Microsoft 用作 Google 的备份?
这似乎相当简单,但我没有看到任何人这样做。
这非常有帮助。感谢您收集所有这些信息,您的工作非常感谢!
您真是太棒了,感谢您提供这些内容。
谢谢,快速便捷的代码。我将在一些 Bitcoin 赌博网站上使用它。
你好
我正在将它添加到 sp2010 主页。只有一件事,为什么我需要取消转义 XML 定界符?我是否应该在使用 jQuery 时经常这样做?
Daniel
PS:这是我见过的最复杂的(线程化的)帖子评论功能!
在我看来,使用上面的代码示例,如果 CDN 只是速度很慢,但没有停机,您可能会不必要地将 jQuery 加载到 DOM 两次。
也帮助了我。非常感谢!
简单而巧妙!谢谢
我见过这个 jQuery CDN 回退代码的另一个备用版本。我建议使用 Modernizr 工具(http://modernizr.com/)或 html5boilerplate(http://html5boilerplate.com/)。它们可以避免很多意外情况。
这正是我要找的:D 谢谢。
但是如何才能对其他脚本也这样做?比如这个
http://browser-update.org/update.js
它似乎不适用于 typeof 东西,如果我写 update 或 browser-update 或类似的东西,而不是 jQuery。
有什么想法吗?提前感谢。再次感谢您的这篇文章。
此致
Casper
我无法评论上面的技术问题,但意外点击了下面的弹出式标题……:-) :-)
在阅读了上面关于 CDN 的“问题”之后,我真的很需要这个。
自 1984 年(我在遥远的澳大利亚创建了第二个 BBS,并获得了大量技术帮助——我只提供了资金和设施)以来,我见过的最棒、最聪明的网站之一。
我猜这不是 WP 网站?:-)
糟糕!
刚刚查看了这个网站的“出处”。印象更深刻了。
jQuery Mobile 怎么办?
jquery-ui 怎么办?
我使用了 **whatdoesitwant** 的想法,实际上我在别处找到了它。非常有用,尤其是在我使用笔记本电脑开发并且没有可用的互联网连接时。
为什么要取消转义?我不明白。
我一直在寻找类似的东西,可以将其更改为检查 Google 或 Twitter 的 CDN 中的 jQuery 缓存版本,如果存在,则使用它,如果最终用户浏览器中没有缓存版本,则从我们的 web 服务器加载它?
基本上,我的意思是,如果用户已经在其浏览器缓存中拥有我的 Bootstrap 网站功能所需的 jQuery 版本,则使用该版本……但我更希望在没有该版本时从我们的服务器加载它,而不是从 Google 或 Twitter 加载它。