2010-11-14 60 views
7

我最近开始在一家新公司工作,他们有一个现有的应用程序,其中包含1000行Javascript代码。基准包含数十个JS文件,其中包含10,000多个自定义代码行,它们还使用多个第三方库,如Jquery,Livequery,JQTransform等。他们从用户处收到的主要投诉之一是网站客户端运营缓慢。我一直负责优化和改进JS的性能。我的第一步显然是前进到最新的Jquery库,并将JSMin合并到构建过程中。除此之外,我想知道是否有人在如此巨大的代码基础上开始优化的一些技巧?Javascript优化,从哪里开始?

+3

页面加载后页面加载或用户交互感觉缓慢吗? JS是否创建了很多HTML客户端?是否有大量的AJAX调用用户所做的一切? – Robusto 2010-11-14 15:03:28

+0

我们在服务器/网络级别进行了大量分析,缓慢程度似乎局限于运行后页加载的Ajax/JQTransform代码。 – 2010-11-15 12:41:54

回答

7

您可以尝试安装DynaTrace Ajax Edition(free download here)并查看告诉你的内容。我认为它只支持IE8,但这可能是最好的开始。在我看来,它具有比Firebug或Chrome更全面和易于理解的Profiler界面。

有一件事跳到我身上是“Livequery”,如果不小心使用非常可能会导致巨大的性能问题。请记住:在一个很大的,随着时间的推移发展并且可能没有最现代的Javascript技术的代码库中,你真正的问题将会是你自己的代码中的坏算法。较新的库和缩小/优化方法是好主意,但你首先需要做的是找到看似缓慢的页面,然后开始分析。根据我的经验,在这样一个庞大的旧代码库中,你会很快发现一些可怕的真的。安装一个跟踪CPU利用率的桌面小工具。这是查看页面代码何时导致浏览器直接减速的好方法,而不仅仅是网络滞后。任何大量时间的浏览器CPU使用量的大幅增长都应该是一个大红旗。

+0

谢谢我今天会尝试DynaTrace,看看它是如何发展的。 – 2010-11-15 12:42:20

6

描述该代码。如果你只是“感觉”它可以被优化,不要优化某些东西。记住80%20%的规则。 80%的时间花费在20%的代码中。使用谷歌的Closure tools。他们可以优化和减少你的JS代码,这至少会使它在客户端的计算机上加载更快。

2

要走的路是找到瓶颈。如果发现实际situtation在应用程序很慢,你可以使用萤火虫分析代码,并告诉多少时间花在对每一个函数和他们有多少次被调用。从这些信息中可以很容易地确定需要改进的地方。

一般一个web应用的瓶颈是:

  • 广泛地与DOM工作(重画,重排)
  • 繁重的网络通信(AJAX)
1

你有很长的路要走的你交配,我不羡慕你。

这里有一些Performance Optimization Techniques for Javascript我写了一个类似于你最近的工作后写下来的。

它们按照它们的性能差异分为5大类。

但是给你说怎么样的代码库,我觉得管理的第二部分,积极减少你的依赖是最相关的,尤其是:

  1. 修改代码以减少库的依赖,并
  2. 使用对存储库加载后依赖管理和模块

然而,所有25项技术有助于提高性能。

我希望你觉得它们有用。