有一些方法来包括jQuery和jQuery UI,我想知道人们使用什么?

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

我最近一直在使用谷歌JSAPI,但发现它需要很长时间来设置SSL连接,甚至只是解析google.com。我一直在使用以下谷歌:

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

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

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

编辑:刚刚访问了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之间切换了。


当前回答

优点:谷歌上的主机有好处

可能更快(他们的服务器更优化) 他们正确处理缓存- 1年(我们努力被允许在我们的服务器上进行更改以获得正确的头) 已经在其他域上拥有谷歌托管版本链接的用户已经在他们的缓存中拥有该文件

缺点:

一些浏览器可能会将其视为跨域XSS并禁止该文件。 特别是运行Firefox NoScript插件的用户

我想知道你是否可以包括从谷歌,然后检查一些全局变量的存在,或之类的,如果没有从你的服务器加载?

其他回答

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

但是,考虑到您正在使用的jQuery文件可能不会经常更改,浏览器缓存会起作用,使这一点在大多数情况下变得毫无意义。

把它放在外部服务器上的第二个原因是降低到自己服务器的流量。

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

jQuery 1.3.1 min的大小只有18k。我不认为这是一个太大的打击,要求在初始页面加载。它会在那之后被缓存。因此,我自己主持。

我将添加这一点作为本地托管这些文件的理由。

Recently a node in Southern California on TWC has not been able to resolve the ajax.googleapis.com domain (for users with IPv4) only so we are not getting the external files. This has been intermittant up until yesterday (now it is persistant.) Because it was intermittant, I was having tons of problems troubleshooting SaaS user issues. Spent countless hours trying to track why some users were having no issues with the software, and others were tanking. In my usual debugging process I'm not in the habit of asking a user if they have IPv6 turned off.

我无意中发现了这个问题,因为我自己正在使用这个特定的“路由”到文件,而且只使用IPV4。我发现了开发工具告诉我jquery没有加载的问题,然后开始做traceroutes等…找到真正的问题。

在此之后,我很可能永远不会回到外部托管文件,因为:谷歌不必因为这成为一个问题而崩溃,而且……这些节点中的任何一个都可能被DNS劫持,并传递恶意js而不是实际文件。一直认为我是安全的,谷歌域永远不会宕机,现在我知道用户和主机之间的任何节点都可能是故障点。

这里有一些有用的资源,希望可以帮助你选择你的CDN。 微软最近为通过他们的CDN交付图书馆添加了一个新的域名。

旧格式:http://ajax.microsoft.com/ajax/jQuery/jquery-1.5.1.js 新格式:http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js

这不会为microsoft.com发送所有cookie。 http://www.asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_from_the_CDN_11

这里有一些关于所有技术中最流行的网络技术的统计数据。 http://trends.builtwith.com/

希望可以帮助您选择。

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

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

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

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

我知道我对谷歌有一定的信任,以提供正确的脚本文件,并保持在线和可用。到目前为止,我对使用谷歌并没有感到失望,并将继续这种配置,直到它不再有意义为止。

有一件事值得指出…如果你的网站上有安全页面和不安全页面的混合,你可能想动态更改谷歌源,以避免在安全页面中加载不安全内容时经常看到的警告:

这是我想到的:

<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库的最新major版本被加载,你也可以更改url来反映jQuery的major编号:

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

最后,如果你不想使用谷歌而更喜欢jQuery,你可以使用下面的源路径(请记住jQuery不支持SSL连接):

<script type="text/javascript">
    document.write("\<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'>\<\/script>");
</script>