4

我想知道是否使用 jquery 的getScript

我有一个需要包含在我的网站中的 jQuery 插件,但我不确定该怎么做,我想知道这些方法之间是否有区别:

就我而言,我必须包含一个相当大的脚本,但仅适用于 IE 浏览器。此刻我这样做:

if($.browser.msie){
 //minifed code
}

现在我想知道这是否:

if($.browser.msie){
 $.getScript('link to minified script');
}

会有什么优点/缺点?或者,如果它或多或少是同一件事?

4

6 回答 6

3

更好用:

if($.browser.msie){
 //minifed code
}

因为.getScript()永远不会缓存文件。

于 2012-08-28T08:41:40.707 回答
2

获取外部脚本会有一些缺点。

一个 HTTP 请求

if($.browser.msie){
 //minifed code
}

两个 HTTP 请求

 if($.browser.msie){
 $.getScript('link to minified script');
}

您的浏览器通常只能同时处理 2 个 http 请求。所以从性能的角度来看,第一个会更快。

进一步解释

getScriptIE 用户将有一个更小的请求,(-你的“缩小代码”的大小)。但是其他人每次都必须下载外部脚本(+ 外部脚本的大小 * 页面请求数)+ 由于额外的 HTTP 请求而导致响应延迟。

使用缩小代码,每个人都必须下载你的缩小代码大小(+缩小代码大小)。

假设您的 minifed 代码是 5K 并且被访问 10 次,这意味着:

IE 获取脚本:

(5K * 10) + 使用第二个 HTTP 请求的性能 = 50K+

非 IE

0

///////////////////////////////////////// //////

IE 非GetScript

5K

非 IE

5K

于 2012-08-28T08:43:52.460 回答
1

这是两个完全不同的东西。在一种情况下,您将脚本嵌入到页面中,因此可以立即访问它,并且您不需要任何额外的代码来验证它是否可用。但是,在第二种情况下,您将脚本作为外部资源加载,这意味着您可能需要处理可能的通信错误、脚本错误等。

于 2012-08-28T08:41:08.110 回答
1

两种方法之间存在差异。即使浏览器不是 ie,您嵌入的第一种方法也会下载整个脚本。它会增加页面大小,从而影响页面加载性能。

第二个方法会更好,只有在需要时才从外部 js 文件加载脚本,这意味着只有当浏览器是 IE 时。所以在其他浏览器中性能会更好。

您还提到脚本非常大。所以最好将该脚本包含在外部 js 文件中。由于这些文件被缓存在客户端机器中,从而提高了性能。无需一次又一次地获取它

于 2012-08-28T08:44:22.407 回答
0

因此,根据您必须深入研究的来源,您可以看到 getScript 正在为您添加脚本标签,因此没有区别。除了启动 jQuery 和处理添加脚本元素的 JavaScript 的(小)处理。我认为最大的区别在于它允许您以编程方式注入脚本标记,以便您可以添加逻辑,如浏览器测试。

于 2012-08-28T08:39:47.300 回答
0

不需要在文件中嵌入脚本,使用其他浏览器的用户不应该得到它。$.getScript只是$.ajaxwith的简写dataType script,所以它只是加载脚本并执行它。

于 2012-08-28T08:40:39.740 回答