【问题标题】:How to increase performance of jQuery如何提高 jQuery 的性能
【发布时间】:2009-09-10 14:37:50
【问题描述】:

我有一个用 jsp 和 jQuery 编写的聊天应用程序。对于在某个 URL 中不断发布请求的线程,我使用了 setTimeout 方法。我的浏览器在一段时间后挂起,cpu 利用率非常高。

有什么办法可以提高 JS 的性能?

【问题讨论】:

  • 我怀疑你的设计。
  • 请发布一些代码。我从来没有让 jQuery 挂在我身上。
  • 99% 的情况下,提高 JS 性能的唯一方法是编写更好的代码。我猜你没有完全理解这种语言和/或它是如何工作的。
  • 我修改了我的答案,看看:)
  • 必须发布一个好的答案代码。

标签: javascript jquery


【解决方案1】:

检查这个: http://www.tvidesign.co.uk/blog/improve-your-jquery-25-excellent-tips.aspx#tip1

它有一些非常好的建议,例如:

  • 通过缓存将选择操作保持在最低限度
  • 尽量减少 DOM 操作
  • 尽可能使用 ID 而不是类
  • 为您的选择器提供上下文

【讨论】:

    【解决方案2】:

    您是否尝试过使用Firebug 进行调试?您可以使用它来调试 javascript、监控请求和响应等等。

    【讨论】:

      【解决方案3】:

      好吧,我在这之前就是这样做的(顺便说一下,这与 jquery 无关):

      try {
          window.clearInterval(x);
      } catch(e) {
          // do nothing
      }
      x = setInterval(Update, 1000);
      

      在你的情况下,你应该 clearTimeout :)

      试试这个:

      refresh() { $.post("./chatServlet",  {  message: "hxci",  name: $("#author").val(),  event: "AUTOROOMMESSAGE",   roomname: $("#select").val() },   function(xml)   {   $("#msg").empty();   addMessages(xml);    });    try {    window.clearInterval(x);}    catch(e) {       }     x = setInterval(refresh, 3000);   }
      

      【讨论】:

      • 既然我们在这里讨论优化,我应该提一下,在调用 clearInterval 之前没有理由检查 x 是否为 null。这只是我们不需要的额外循环!
      • 乔什·斯托多拉:第一次运行时,间隔将为空,如果您调用 window.clearInterval(x) 并且 x 为空……您真的认为检查空是一种性能吗罚款?
      • 为什么要清除间隔并重新设置?要么你应该总是使用setTimeout(),要么让间隔运行。
      • 好吧,我递归调用了“更新”函数 Update() { //magic here try { //window.clearInterval(x); } catch (e) { // 什么都不做 } x = setInterval(Update, 1000);浏览器不断占用越来越多的内存,直到它阻塞系统但是当我清除间隔时一切恢复正常!
      • 嗨 Yassir 以下是我的函数 function refresh() { $.post("./chatServlet", { message: "hxci", name: $("#author").val() , 事件: "AUTOROOMMESSAGE", 房间名: $("#select").val() }, function(xml) { $("#msg").empty(); addMessages(xml); }); setTimeout('刷新()',3000);我的代码中有 2 个递归函数,例如 this.browser 在客户端占用大量内存。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2010-10-23
      • 2012-12-03
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多