我想知道是否使用jquery的getScript。
我有一个jQuery插件,我需要包含在我的网站中,但我不确定该怎么做,我想知道这些方法之间是否存在差异:
就我而言,我必须包含一个相当大的脚本,但仅适用于IE浏览器。此刻我这样做:
if($.browser.msie){
//minifed code
}
现在我想知道是否:
if($.browser.msie){
$.getScript('link to minified script');
}
会有什么优点/缺点吗?或者如果它或多或少是相同的东西?
答案 0 :(得分:3)
最好使用:
if($.browser.msie){
//minifed code
}
因为.getScript()
永远不会缓存文件。
答案 1 :(得分:2)
获取外部脚本会有缺点。
即。 一个HTTP请求
if($.browser.msie){
//minifed code
}
两次HTTP请求
if($.browser.msie){
$.getScript('link to minified script');
}
您的浏览器一般只能处理2个http请求。所以从性能的角度来看,第一个会更快。
进一步说明
使用getScript
,IE用户将有一个较小的请求,( - “缩小代码”的大小)。但是每个人都必须每次下载外部脚本(+外部脚本的大小*页面请求数)+由于额外的HTTP请求而导致响应延迟。
使用缩小的代码,每个人都必须下载您的迷你代码的大小(+缩小的代码大小)。
假设您的迷你代码是5K并且被访问10次意味着:
IE GetScript:
(5K * 10)+使用第二个HTTP请求的性能= 50K +
非IE
<强> 0 强>
/////////////////////////////////////////////// /////////
IE nonGetScript
<强> 5K 强>
非IE
<强> 5K 强>
答案 2 :(得分:1)
这是两件完全不同的事情。 在一种情况下,您将脚本嵌入到页面中,以便可以立即访问它,并且您不需要任何其他代码来验证它是否可用。 但是,在第二种情况下,您将脚本作为外部资源加载,这意味着可能存在需要处理可能的通信错误,脚本错误等错误的情况。
答案 3 :(得分:1)
两种方法之间存在差异。 嵌入的第一种方法是下载整个脚本,即使浏览器不是ie。它会增加页面大小,从而加载页面性能的开销。
第二个apporach会更好,只有当需要时才从外部js文件加载脚本,这意味着只有当浏览器是IE时。因此,其他浏览器的性能会更好。
你还提到脚本非常大。因此,最好将该脚本包含在外部js文件中。由于这些文件在客户端机器中缓存,从而增加了性能。无需一次又一次地获取
答案 4 :(得分:0)
因此,根据您source所需的drill down a bit,您可以看到getScript正在为您添加脚本标记,因此没有区别。除了(小)处理启动jQuery并处理添加脚本元素的JavaScript之外。我认为最大的区别在于它允许您以编程方式注入脚本标记,以便您可以像浏览器测试一样添加逻辑。
答案 5 :(得分:0)
不需要在文件中嵌入脚本,具有其他浏览器的用户不应该获取它。 $.getScript
只是与$.ajax
dataType
的{{1}}的简写,因此它只是加载脚本并执行它。