2010-09-28 48 views
7

我使用下面的代码通过Google的CDN加载jQuery。jQuery通过Google CDN最佳实践

我的主要问题是如果用户点击我的网站,并且还没有jQuery预缓存会发生什么。他会下载Google版本和我自己的?这里的并发性如何工作?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 
    if(typeof jQuery == 'undefined') { 
     //<![CDATA[ 
     document.write("<script src='/includes/jquery-1.4.2.min.js' type='text/javascript'><\/script>"); 
     //]]> 
    } 
</script> 

谢谢。

+1

一个问题我本来就是为什么有你的第二次检查呢?如果谷歌倒闭了,我很确定大部分互联网都在下降......(我只是半开玩笑)。冗余是否真的有必要? – JasCav 2010-09-28 17:08:30

+1

@JasCav - 用户无法访问google.com,也许在中国也许有一个机会,但有一点小的机会?只是我头顶的一个例子。 – 2010-09-28 17:11:58

+0

@JasCav:有一次客户端无法访问Google上的脚本。我不知道确切的原因,但最好防止,多一些线不会伤害。 – BrunoLM 2010-09-28 17:14:12

回答

9

在您的示例代码中,他们将下载谷歌版本,如果因为其他网站而不具有该版本。然后如果由于某种原因谷歌停机,他们会下载您的版本,他们不会同时下载。如果第一个(来自Google)失败,则第二个仅请求

支票是这样的:

  1. 我们是否有谷歌的缓存版本?
    • 是的 - 好吧,去吧,使用它。
    • - 从谷歌下载它,使用它。
  2. 是否定义了jQuery(JavaScript对象)?
    • 是的 - 好吧,它加载罚款,if()是错误的,继续。
    • - 哦!谷歌加载失败,无论是从缓存或提取,需要从其他地方加载
      • 加载它从您的网站通过一个新的<script>标签刚刚添加。
+0

完美。喜欢你的回答风格。正是我的目标。谢谢。 – Frankie 2010-09-28 17:35:08