2010-04-25 39 views
7

Tôi đang sử dụng Jquery để làm cho hình ảnh cuộn trên trang của tôi theo chiều ngang. Vấn đề duy nhất là nó sử dụng một số lượng nghiêm trọng của việc sử dụng CPU. Lên đến 100% trên một máy tính xách tay lõi đơn trong firefox. Điều gì có thể gây ra điều này ???Sử dụng CPU Jquery

Jquery

<script> 
    jQuery(document).ready(function() { 

    $(".speech").animate({backgroundPosition: "-6000px 0px"}, 400000, null); 
    }); 

    </script> 

CSS

.speech { 
    /*position:fixed;*/ 
    top:0; 
    left:0px; 
    height:400px; 
    width:100%; 
    z-index:-1; 
    background:url(/images/speech.png) -300px -500px repeat-x; 
    margin-right: auto; 
    margin-left: auto; 
    position: fixed; 
} 

HTML

<div class="speech"></div> 
+0

Crikey thực sự? Tôi chưa bao giờ bắt gặp một con heo nhớ như vậy. Bạn đang dùng trình duyệt nào? Tôi không thể tái tạo vấn đề. Hãy thử những điều tương tự nhưng không sử dụng một png - hãy thử một gif/jpg thay vào đó và xem nếu bạn có cùng một vấn đề. – Glycerine

+3

Ông không nói đó là một con heo nhớ; đó không phải là ý nghĩa của việc sử dụng CPU 100%. – Pointy

Trả lời

12

Nó đang sử dụng hết tài nguyên CPU vì bạn yêu cầu trình duyệt vẽ lại hình ảnh nhiều lần mỗi giây trong một khoảng thời gian dài. Đó không phải là miễn phí.

+0

+1. không bỏ phiếu. – sepehr

0

Nếu đây là một vấn đề liên quan đến bộ nhớ CPU thì bạn có thể vô hiệu hóa kết quả của lời gọi hàm jQuery. Nếu cuộc gọi của bạn trả về một đối tượng jQuery sau đó sau khi cuộc gọi, bạn có thể thiết lập nó để null:

var tmp = $(".speech").animate({backgroundPosition: "-6000px 0px"}, 400000, null); 
}); 
tmp = null; 

Lưu ý: Nếu đây IS trong BẤT CỨ CÁCH NÀO liên quan với rò rỉ bộ nhớ sau đó nó đã làm với tài liệu tham khảo tròn và bằng cách thiết lập để null bạn có thể phá vỡ nó.

Hãy thử, tôi muốn biết kết quả nếu bạn có thời gian để đăng bài.

+0

Điều đó sẽ không làm tốt gì cả. Vấn đề được mô tả là một tải CPU trong quá trình hoạt ảnh. Giải phóng đối tượng jQuery sau khi hoạt ảnh sẽ không ảnh hưởng đến quá trình của hoạt ảnh. – Pointy

+0

Vì vậy, bạn có thể bỏ qua bất kỳ vấn đề nào liên quan đến bộ nhớ. Tôi sẽ đi vào các chi tiết thực hiện chức năng animate và kiểm tra các vấn đề, tôi cũng sẽ đảm bảo rằng các tham số hợp đồng chức năng/phương thức được hiểu. Nếu hoạt ảnh quan trọng trong ứng dụng của bạn, tôi sẽ đề nghị tìm kiếm các thư viện JS tập trung vào hoạt ảnh. Có thể có một plugin hoặc phần mở rộng trong jQuery xử lý hoạt ảnh theo cách tốt hơn. Xin lỗi vì đã làm không tốt ... đôi khi chúng ta cần một nơi để bắt đầu và tìm đường đến mục tiêu sau khi loại bỏ từng yếu tố. – Andreas

11

Trong hợp cụ thể bất cứ ai đang tìm kiếm một giải pháp cho việc sử dụng CPU cao khi sử dụng hình ảnh động jQuery (như tôi đã được) sau đó nó đáng chú ý là jQuery.fx.interval đã được thêm vào jQuery 1.4.3 để bạn có thể kiểm soát tốc độ khoảng thời gian hoạt ảnh.

Ví dụ về sử dụng (thiết lập này lên khoảng 50-70 giữ hình ảnh động của tôi mịn và tôi nhận thấy việc sử dụng CPU giảm xuống còn khoảng 10-20%):

jQuery.fx.interval = 50;

+1

đó là nó - điểm. – schellmax