2010-05-02 20 views
9

我的网站的不同页面有不同的JS的需求(主要是插件),有些需要一个灯箱,有的不要,有的需要一个旋转木马,一些不要等每页不同的小js文件VS. 1x站点范围内的js文件?

至于pageloading速度应该怎么

选项1 - 参考各的js在需要时文件:

这样一个页面可能有:

<script type="text/javascript" src="js/carousel/scrollable.js"></script>  
<script type="text/javascript" src="js/jquery.easydrag.js"></script> 
<script type="text/javascript" src="js/colorbox/jquery.colorbox-min.js"></script> 

和另一个有:

<script type="text/javascript" src="st_wd_assets/js/carousel/scrollable.js"></script> 
<script type="text/javascript" src="st_wd_assets/js/typewatch.js"></script> 

选择2 - 结合,压缩成一个文件site_wide.js:

所以每个页面将引用:

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

有将不使用的选择/事件侦听器,不过,如何这是不好的? 我会包括任何插件笔记/在site_wide.js顶部认证资格文件

+0

http://stackoverflow.com/questions/2707499/improving-javascript-load-times-concatenation-vs-many-cache/2707544#2707544 http://stackoverflow.com/questions/1495338/use-cache -file-or-one-more-http-request – 2010-05-02 11:06:10

回答

7

它通常最好combine these and serve one file,其中设置缓存头,使客户持有到它,而不是要求它的每一页的。请记住,如果一个jQuery选择器没有找到任何东西,那么它不会做任何事情,只要你在每个页面中使用了大部分脚本,这并不是什么大事,它只是没有匹配的选择器而已。

Make sure it's being cached by the client though,你所有的工作都是徒劳的。另外请确保it's served minified and gzipped。最后,看看主办你的main libraries from a CDN

+0

请记住,某些客户端(如iPhone)不会缓存大于15 KB的文件。此外,奇怪的是,这个答案http://stackoverflow.com/questions/2707499/improving-javascript-load-times-concatenation-vs-many-cache/2707544#2707544推荐相反。 – 2010-05-02 11:05:09

+3

@Marcel - 限制是> 25kb(这是**未压缩的**大小,非常低):)因为你正在加载库**本身**每页加载,但在iPhone上的jQuery情况isn这很棒,直到移动版本出来。如果你必须往返任何一个插件(你必须使用colorbox),那么最好一次性将它们全部取出,因为请求本身就是移动设备上非常痛苦的事情,具有该请求的较大文件比创建另一个文件要快得多。作为一个AT&T客户与一个和废话/参差不齐的服务,我可以证明这一点:) – 2010-05-02 11:12:22

+0

根据此评论http://www.niallkennedy.com/blog/2008/02/iphone-cache-performance.html#comment255665现在的大小限制是15 KB而不是25 KB(OS 3.1)。由于我没有iPhone,我无法测试这个。很高兴知道HTTP请求在移动连接上的速度可能会很慢。 – 2010-05-02 11:30:17

2

将它们合并为一个大而精简的外部文件,并将其包含在每个页面中。第一次加载页面后,浏览器将缓存它,因此用户只会下载一次。