10/10/2018, 09:22

jquery làm tăng CPU usage ?

Chào các pác, hôm ni em gặp 1 vấn đề không biết có pác nào bị chưa?
em tạo ra 1 site(chạy local hic chưa có tiền mua host) có include thư viện jquery1.2.6 vào và khai báo như sau :
Code:
$(document).ready(function (){
$('a[name=ajax]').click(function(){
    $.ajax({
      url: this.href,
      error:function(html){
        $('#maincontent').html('The page is not exists !');
        return false;
      },
      success: function(html){
        $('#maincontent').html(html);
        return false;
      }
    });
    return false;
  });
và nhấp vào các link trên menu. Không hiểu đây là bug của JQuery hay em khai báo trên sai cái gì mà mỗi lần nhấp menu thì CPU usage lại tăng lên mấy % trong task manager của window, nhấp chừng chục cái là cái browser nó ngốn RAM khủng khiếp 209,000KB và máy chậm ơi là chậm. Tắt trình duyệt đi thì máy lại trở về bình thường.
Có pác nào gặp vấn đề này chưa giúp em với.
Chân thành cám ơn các pác.
herofit viết 11:26 ngày 10/10/2018
Được gửi bởi dungbeo113
Chào các pác, hôm ni em gặp 1 vấn đề không biết có pác nào bị chưa?
em tạo ra 1 site(chạy local hic chưa có tiền mua host) có include thư viện jquery1.2.6 vào và khai báo như sau :
Code:
$(document).ready(function (){
$('a[name=ajax]').click(function(){
    $.ajax({
      url: this.href,
      error:function(html){
        $('#maincontent').html('The page is not exists !');
        return false;
      },
      success: function(html){
        $('#maincontent').html(html);
        return false;
      }
    });
    return false;
  });
và nhấp vào các link trên menu. Không hiểu đây là bug của JQuery hay em khai báo trên sai cái gì mà mỗi lần nhấp menu thì CPU usage lại tăng lên mấy % trong task manager của window, nhấp chừng chục cái là cái browser nó ngốn RAM khủng khiếp 209,000KB và máy chậm ơi là chậm. Tắt trình duyệt đi thì máy lại trở về bình thường.
Có pác nào gặp vấn đề này chưa giúp em với.
Chân thành cám ơn các pác.
cái này hình như là bị ie thì phải bạn click liên tục là bị đơ mình cũng có sẩy ra tình trạng này nhưng chưa biết cách sử lý
s.code viết 11:29 ngày 10/10/2018
Nên disabled button sau khi đã gọi hàm. Sau khi kết thúc thì enabled lại
dungbeo113 viết 11:27 ngày 10/10/2018
Được gửi bởi s.code
Nên disabled button sau khi đã gọi hàm. Sau khi kết thúc thì enabled lại
Pác nói thế là sao mình chưa hiểu ý pác. Thêm nữa theo khai báo thì mình setup cho thẻ <a> chứ không phải button. Pác có trả lời nhầm bài viết không?
s.code viết 11:26 ngày 10/10/2018
Cắm cái cờ click = false;

Khi chạy hàm thì set nó = true;
dungbeo113 viết 11:26 ngày 10/10/2018
Được gửi bởi s.code
Cắm cái cờ click = false;

Khi chạy hàm thì set nó = true;
Pác cứ úp úp mở mở. Pác nói rõ hơn cho em hiểu đi, em có post đoạn code lên đó, cắm vào chỗ nào = false, chỗ nào = true ?
jiSh@n viết 11:26 ngày 10/10/2018
Code:
var clicked = false;
$(document).ready(function (){
  $('a[name=ajax]').click(function(){
    if (clicked) return false;
    clicked = true;
    $.ajax({
      url: this.href,
      error:function(html){
        clicked = false;
        $('#maincontent').html('The page is not exists !');
        return false;
      },
      success: function(html){
        clicked = false;
        $('#maincontent').html(html);
        return false;
      }
    });   
    return false;
  });
});
s.code viết 11:30 ngày 10/10/2018
:P đó....

Bác jiSh@n chu đáo quá.
dungbeo113 viết 11:37 ngày 10/10/2018
Cám ơn câu trả lời của pác jiSh@n , nhưng đưa biến cờ vào đó cũng chả có tác dụng gì. Vì nó chỉ xảy ra khi có sự kiện click của thẻ <a> . Em cũng cầu may với sự tuyệt vọng là pác đúng nên đưa đoạn code của pác vào nhưng kết quả vẫn chả có gì thay đổi. Quan sát trong Task Mananger của Windows vẫn thấy CPU bị chiếm rất nhiều, click càng nhiệm nó càng tăng ban đầu là 10% rồi về 0%, click link khác trong web nó tăng lên 13% rồi về 0% ... cứ thế mỗi lần click là nó tăng đến 55%, bộ nhớ RAM tốn khoảng 219,000 KB thì máy em chậm quá nên phải tắt trình duyệt. Khi tắt rồi thì máy lại trở lại bình thường.
Có pác nào có giải pháp hay hơn không? Xin đa tạ.
jiSh@n viết 11:32 ngày 10/10/2018
Được gửi bởi dungbeo113
Cám ơn câu trả lời của pác jiSh@n , nhưng đưa biến cờ vào đó cũng chả có tác dụng gì. Vì nó chỉ xảy ra khi có sự kiện click của thẻ <a> . Em cũng cầu may với sự tuyệt vọng là pác đúng nên đưa đoạn code của pác vào nhưng kết quả vẫn chả có gì thay đổi. Quan sát trong Task Mananger của Windows vẫn thấy CPU bị chiếm rất nhiều, click càng nhiệm nó càng tăng ban đầu là 10% rồi về 0%, click link khác trong web nó tăng lên 13% rồi về 0% ... cứ thế mỗi lần click là nó tăng đến 55%, bộ nhớ RAM tốn khoảng 219,000 KB thì máy em chậm quá nên phải tắt trình duyệt. Khi tắt rồi thì máy lại trở lại bình thường.
Có pác nào có giải pháp hay hơn không? Xin đa tạ.
Như vậy thì phải xét 1 cách toàn diện, chưa hẳn là do đoạn code ở trên. Nếu đã thêm cái flag clicked vào thì tại 1 thời điểm chỉ có 1 link có thể thực hiện request. Khi biến clicked = true thì click bao nhiêu link cũng thế thôi, ko thể xảy ra ajax call, trừ phi bạn còn 1 mớ code ở chỗ khác
Bài liên quan
0