2011-03-05 110 views
1

我喜欢我的网页上下面的一些JavaScript函数:速度优化JavaScript函数

function fun1(){...} 
function fun2(){...} 
function fun3(){...} 
function fun4(){...} 

我可以在一个或两个页面使用fun1,但其他功能仅针对特定的网页。

我的问题是:我是否应该将所有功能包含在一个文件中,如script.js或包含特定页面的特定功能?哪一个更适合速度优化?

回答

3

我想你的问题是关于优化页面加载速度。

我会建议将它们尽可能在单个js文件中分组。 否则,你将不得不加载大量的小js文件,增加页面加载时间。

考虑缩小你的JS文件。

+0

我正在使用** jQuery.ajaxSetup({0}}}; **为ie问题。这是否会影响页面加载速度 – Gowri 2011-03-05 09:11:25

+1

参数可以通过jQuery.ajax()为每个请求参数定义,或通过jQuery.ajaxSetup()为默认参数定义。 如果大部分Ajax请求都可以被缓存,则应该考虑仅在不可缓存的查询中定义“cache:false”。否则,ajaxSetup()很好。 – Lotfi 2011-03-05 10:30:52

0

取决于函数的大小,访问者的访问模式,缓存设置和其他情况。下载文件的速度取决于服务器必须发送多少个TCP数据包。 (数据包大小通常约为1.5K)。如果文件需要分解为更多数据包(处理不需要运行的脚本的客户端大小的延迟可忽略不计),则增加文件大小就很重要,因此如果你的脚本很短(你当然应该先将它们缩小),最好是等候捆绑它们。如果您希望普通访问者最终需要所有脚本,最好再将它们发送到一个文件中。但是,如果平均访问者不需要某些较大的脚本(例如,只有上传时需要一部分,并且只有0.1%的访问者上传了某些内容),那么分开发送它们可能会更好。

0

.js文件由您的浏览器缓存。因此,您可以在单个文件中包含尽可能多的功能。如果你将它们分成独立的文件,那么大部分额外的调用都是由浏览器造成的,这会减慢加载页面的速度。如果您担心.js文件的大小,也可以压缩js文件。@http://javascriptcompressor.com/

0

这取决于你的服务器如何发送这些文件。如果你有Firebug,打开Net标签并检查你的JS文件。如果您在Headers选项卡中看到Last-Modified条目,这意味着您最好将所有JS放入一个文件中。如果您没有看到它,最好将其分解成页面特定的文件。

在我看来,有加快你的页面加载时间的四种主要方法:

  1. 服务器头 - 这是一个比较复杂的设置,但如果你控制你的服务器设置,或者您愿意通过动态页面(PHP或ASP)为您的JS提供服务,您可以向浏览器发送额外指令以缓存特定时段的特定内容。由于您的JS文件可能很少发生更改,因此为他们执行此操作通常很安全。您基本上只需要将Expires标题设置到未来的某个点。这意味着浏览器根本不需要请求文件,只要它在缓存中。如果你有一次又一次回来的游客,这是最有意义的。如果你得到很多一次访问的访问者,这不会有什么不同。这确实意味着如果您更改这些文件,许多浏览器都不会接受更改;因此您应该更改文件名或将如下内容附加到查询字符串:<script type="text/javascript" src="/sitescript.js?v=1.1"></script>。如果您有多个静态HTML页面,这可能是一个维护问题。
  2. 数量的文件 - 在我看来,这是您获得最大的降压节省的地方。我几乎可以肯定,大多数浏览器一次只支持四个活动请求。这意味着,如果您的网页有五个图像,则最后一个图像将不会被请求,直到其中一个图像完成加载。如果您的网站有50个图像和3个CSS文件以及10个JS文件,则需要一段时间才能清除所有这些请求。请记住,即使您发送的标头为Last-Modified,浏览器仍然需要检查内容是否已更改,因此它需要其中一个请求插槽。如果您可以将所有图像合并为单个图像(使用CSS sprites)并将所有JS合并到一个文件中,那么您的页面加载速度将显着加快。
  3. 文件大小 - 随着网络速度的提高,这变得越来越不重要。如果你的服务器不支持内容压缩,那么尽量减少你的JS是个不错的主意,尽管我认为时间节省被高估了。这确实使维护工作更加耗时,而且现场调试几乎是不可能的,但它肯定会使文件大小下降很多。如果你有很多JavaScript(可能大约150KB +?),或者如果你知道你的访问者来自较慢的网络(例如公司网络上的人),我会建议你这样做。如果你的服务器支持压缩,节省实际上可以忽略不计。
  4. 脚本放置 - 当浏览器遇到<script src="...">标记时,它停止所有呈现,直到脚本加载并执行,这意味着不可避免的延迟。如果将脚本放在页面中间,则会注意到页面的一半加载然后暂停。为了提供渲染,尽可能多地在页面的底部放置尽可能多的引用。您在页面顶部需要的脚本可以到达那里,但您在那里遇到的混乱程度越高,页面渲染速度就越慢。任何由onLoadDOMReady执行的代码都可以安全地进入页面底部。

雅虎在其Best Practices页面上有一个非常令人惊叹的优化技巧列表。