使用google.load('jQuery',...)与直接包含托管脚本URL有什么好处?

时间:2008-10-16 14:50:30

标签: javascript optimization

Google托管一些流行的JavaScript库: http://code.google.com/apis/ajaxlibs/

根据谷歌:

  

加载库的最有效方法是使用google.load()...

使用

的真正好处是什么?

google.load("jquery", "1.2.6")

VS

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

7 个答案:

答案 0 :(得分:31)

除了Google能够根据请求将多个文件捆绑在一起的好处之外,使用google.load没有任何好处。实际上,如果您知道要使用的所有库(比如jQuery 1.2.6),那么您可能会让用户的浏览器执行一个不需要的HTTP连接。由于使用Google托管的重点是减少带宽消耗和响应时间,因此最好的决定 - 如果您只使用1个库 - 就是直接调用该库。

此外,如果您的网站将使用任何SSL证书,您希望通过Google的HTTPS连接调用脚本来为此做出规划。从http页面调用https脚本没有任何缺点,但从https页面调用http脚本将导致比您想要考虑的更加模糊的调试问题。

答案 1 :(得分:4)

  1. 它允许您dynamically load代码中的库,无论您想要什么。
  2. 因为它可以让您直接在javascript中切换到新版本的库,而不必强迫您在整个网站上重建/更改模板。

答案 2 :(得分:3)

它允许Google更改网址(但由于已经建立了URL方法,因此无法更改网址)

理论上,如果您执行多个google.load(),Google可以将其捆绑到一个文件中,但我认为这不会实现。

答案 3 :(得分:3)

我发现它对于测试不同的库和不同的方法非常有用,特别是如果你不习惯它们并希望并排看到它们的差异,而不必下载它们。似乎这样做的主要原因之一是它与同步脚本调用异步。您还可以获得一些直接包含在Google加载器中的简洁内容,例如客户端位置。你可以从中获得经度和纬度。不一定有用,但如果您计划有针对性的广告或类似的东西,它可能会有所帮助。

更不用说动态加载总是有用的。特别是要平滑初始站点负载。让最初的“网站加载时间”尽可能少,这是每个网页设计师都在争夺一场艰苦的战斗。

答案 4 :(得分:1)

您可能只想在特殊条件下加载库。

此外,google.load方法可以加快初始页面显示速度。否则,如果在html代码中包含脚本标记,则页面呈现将冻结,直到文件已加载为止。

答案 5 :(得分:0)

就个人而言,我对于已经加载了该库的浏览器是否有缓存优势感兴趣。好像如果有人浏览谷歌并加载正确的jQuery lib然后浏览到我的网站并加载正确的jQuery库......两者都可能使用相同的缓存jQuery。不过,这只是一种推测的可能性。

编辑:是的,至少在使用直接脚本标记到该位置时,如果有人已经从谷歌调用了该库(例如,如果它被其他网站包含在某处),则将缓存javascript库。

答案 6 :(得分:0)

如果您要编写一堆只在特定事件发生时使用该库的JavaScript,您可以等到事件发生时下载库,从而避免对那些实际上不会触发的人发出不必要的HTTP请求事件。但是,对于像Prototype + Scriptaculous这样下载超过300kb JavaScript代码的库,这是不实际的。