2014-01-30 62 views
1

正如我所看到的,每次加载网站时加载jQuery都很慢。即有没有办法从jQuery实时加载特定功能?

<!-- jQuery --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

与将jQuery下载到本地文件系统并将其导入本地相比。即

<!-- jQuery --> 
<script type="text/javascript" src="js/jquery-someversion.min.js"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

显然取决于我的互联网的速度加载脚本的时间。

我想知道是否有某种类型的jQuery API允许我使用HTML脚本标记“延迟加载”它(jQuery)。我的意思与延迟加载jQuery是:只加载特定的功能(S)我会使用,即

<!-- jQuery --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js/events"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

改变了源:<脚本.... SRC =“HTTP:// code.jquery.com/jquery-latest.min.js/ 事件“/>

我知道我可以查找该特定功能的jQuery代码,并在需要时加载它自己,但我每次jQuery有更新或其他内容时,都不希望将这些功能复制到我的本地文件系统中。如果你还没有得到我要去的地方,我想要的是有一种方法,我知道这些功能是最新的和支持的(通过jQuery),所以后来的错误修复/改进/更改/添加/交叉浏览器支持jQuery是“自动”实现在我的网站。

+0

它可能是“慢”,但它只是在*第一*一次它的速度慢。另外,如果你使用真正的版本(而不是总是最新的版本),你将有更好的缓存,因为超时不会尽快过期。 (由于显而易见的原因,这是“最新”版本,因此不能被缓存太长)。 –

+0

'// ajax.googleapis.com/AJAX /库/ jQuery的/ 1.10.2/jquery.min.js'是* *仅32.5KB后,HTTP压缩*和*是*很缓存*。我认为也许还有其他性能问题需要首先消除。 – user2864740

+0

当一个BUG修复伤了你的生产代码比... – epascarello

回答

2

如果您要使用CDN的路径,那么就不会,如果先前已缓存重新下载该文件。它增加了缓存命中的可能性。 (随着越来越多的网站采用这种做法,更多的用户已经准备好了该文件。)

1

你不这么说! jQuery的大小只有32KB!

http://code.jquery.com/jquery-latest.min.js

你会花时加载多个文件不止一个。此外,将所有JS和CSS文件合并成一个JS和一个CSS文件将是一个好主意。

+0

尼特:这是〜90KB,它下降到〜32KB与HTTP压缩。 – user2864740

+0

那又如何? :-) P.S.不是HTTP压缩,但gzip ;-) – Oleg

2

你是总是会慢取jquery-latest vs jquery-version - 服务器强制执行它。例如:

http://code.jquery.com/jquery-latest.min.js

jquery-latest headers

http://code.jquery.com/jquery-1.10.2.min.js

enter image description here

注意,现在有派出非常将来日期Expires头。这意味着一旦第一页被加载,浏览器就会缓存这个版本很长一段时间,使得后续页面调用几乎没有延迟。

然而,通过使用最新版本,您需要强制浏览器以的每个页面加载来获取此文件。当然,这会增加延迟。

我想要的是我有一个方法,我知道功能是最新的日期和支持(通过jQuery)所以后来bug修复/改进/更改/添加/跨浏览器支持jQuery在我的网站中“自动”执行。

当你写的东西,使用$.browser.die().live除然后不知道为什么它不再工作。

有东西花费几分钟,更新您的JS文件可说的(尤其是如果它意味着你的网站昨天工作,今天不,你不知道为什么)。

+1

即使“最新”版本也不会发生非常快的变化,但对资源URL的更新已足够(新资源也具有较长的缓存周期,假设服务器已正确配置)。当然,使用CDN确实有助于全球缓存。 – user2864740

+0

@ user2864740:这不是关于文件本身,而是浏览器如何管理缓存。此外,你继续抓取最新的内容,然后你将运行(最终)发布一些从活动到废弃的内容。 (*咳嗽*'$ .browser'或'$()。live') –

+0

哦,我不赞成以任何方式“自动更新”(超过点数发布)。 – user2864740

2

您可以创建自己的jQuery构建,但您必须自己托管它。

按照"How to build your own jQuery" guide的说明:

特殊的构建可以创建排除jQuery的功能子集。当构建者确定jQuery的那些部分没有被使用时,这允许较小的定制构建。例如,一个应用程序,仅用于对JSONP $就()和不需要计算偏移或元件的位置可以排除失调和AJAX/XHR模块。

+0

很酷的阅读,从来不知道。无论如何,虽然我可能会为一个非常有限的系统做这件事,我会从不需要模块X,但我不会将它分解为“动态加载”模块 - 这看起来像一场噩梦(然后必须尝试并将所有东西重新拼接在一起)。 – user2864740

+0

你能举一个小例子吗? – camou

相关问题