从哪里导入js文件更好?

4
我希望了解在我的网页中,从外部源导入javascript文件和内部源哪个解决方案更快、更好。每种解决方案的优缺点是什么? 例如,哪一个是最好的:
 < script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

或者

< script type="text/javascript" src="../jquery.js"></script>

(同样适用于json2.js)

我在谷歌上找不到任何提示

谢谢!


CDN最大的缺点可能是它没有fonctions.js - Dave Newton
抱歉,我的意思是jquery.js,打错了! - remyremy
有趣的是,许多答案在回答时都省略了地理位置(只有一个答案提到了它,+1 @eureka)。使用CDN可以大大减少数据需要传输的物理距离,因为CDN上的数据分布在世界各地的数据中心中。 - Jasper
6个回答

4
使用CDN(内容分发网络)的主要好处是,由于它们被广泛使用,您的访问者可能已经在他们的浏览器中缓存了您正在加载的脚本的副本。这将完全消除任何加载时间。如果他们没有缓存的副本,CDN很可能比您的服务器更快地将其传递给他们。在我看来,尽可能使用CDN是最好的选择。
即使有这样的考虑,CDN也不是万无一失的,您不希望您的网站完全依赖于别人的服务器。我建议在可能的情况下使用本地脚本的备份。对于jQuery,这相当容易实现:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
    if (typeof jQuery == 'undefined') {
        document.write(unescape("%3Cscript src='/Scripts/jquery-1.7.1.min.js' type='text/javascript'%3E%3C/script%3E"));
    }
</script>

其他库可能在测试是否加载时采用不同的方法,但思路是相同的。

值得注意的是,如果您正在从 Google 的 CDN 加载,请始终使用完整版本号,否则脚本将无法缓存。

也就是说,如果您的请求 URL 看起来像这样:

"http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" // highest 1.4 version (1.4.4)
"http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" // latest version (1.7.1)

过期头是在当前日期之前设置的,因此缓存的效果被抵消了。 更多信息请参见这里

3
如果您从http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js导入JavaScript以改善数据访问,那么Google有CDN,这意味着更有效地向用户传递内容(取决于他们的位置)。
详细了解CDN:http://developer.yahoo.com/performance/rules.html

3
最快的方法肯定是使用您自己的服务器,至少在大多数情况下(即在纯下载速度方面)。 然而,访问者已经从访问另一个使用相同库的网站中缓存了Google版本的jQuery的机会更大,因此如果库已被缓存,则使用Google API更为明智,因为与从您的服务器下载相比,这将更快。 此外,现在您可以通过仅使用第一个数字来请求版本:
http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js

并自动获得最新版本;)

2
为什么从你自己的服务器访问会“明显更快”? - Dave Newton
2
如果您的服务器位于冰岛,而用户位于澳大利亚,则使用Google的CDN可能会更快,因为他们的数据中心遍布全球。我认为这是使用CDN的最有力的论据。但是,如果您的服务器未配置正确的过期标头和压缩输出,那么使用CDN是个好主意(压缩效果非常大)。 - Jasper
我同意,在大多数情况下,CDN非常好用,但是谷歌的速度并不是很快,而我的共享账户将比谷歌更快地发送文件,即使在谷歌的最佳状态下,我的专用服务器也会比谷歌发送文件快得多。至少在我所在的地方,谷歌的服务器似乎每天都在变慢,可能是因为太多用户请求了太多数据。这就是为什么至少对我和我认识的大多数网站管理员来说,从谷歌下载速度较慢,其他地方可能会有所不同,但由于缓存的好处,我们仍然使用谷歌。 - adeneo
这可能是谷歌的情况,因为他们提供免费服务,因此可能不会投入适当数量的服务器/上行来获得超快速下载速度,但如果您使用像AWS或Akamai等服务,它将在一周中的任何一天都能击败您的服务器,星期天更是如此。 - Chris Pratt

2
使用CDN有一些优点:
  • 如果用户已经访问过使用相同脚本的网站并从相同位置下载过该脚本,他们可能已经在浏览器缓存中了。当他们不需要重新下载时,页面加载速度会加快。
  • CDN提供商可能已经设置了服务器以最大化服务脚本的效率,例如通过从物理上靠近用户的服务器发送文件。
  • 您可以节省带宽。
缺点:
  • 您依赖于服务提供商:如果他们的服务停止,您的网站就会崩溃。(如果无法加载外部脚本,则可以提供本地副本。)
  • 您必须信任服务提供商提供正确的文件,并且没有恶意内容。

0
如果是像googlePlusOne或其他稳定的网络服务(或外部广告)等已知资源,则最好使用外部链接。这样它将始终保持最新状态。
如果是类库js(如jQuery或Ext),则最好下载源代码。

0

从本地库加载库将始终更快,这表明本地始终更好,但是...从外部源(例如jQuery)加载库将允许您的站点始终加载最新版本的库。


3
为什么从自己的服务器访问网站“总是更快”? - Dave Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接