2012-04-20 26 views
5

một cách tốt hơn để pre-load hình ảnh là gì:hình ảnh cách để pre-load hiệu quả hơn

$.each(['{{ MEDIA_URL }}jwplayer/jwplayer.js', 
     '{{ MEDIA_URL }}jwplayer/jwplayer.js.jgz', 
     '{{ MEDIA_URL }}jwplayer/player.swf'], function() { 
    $('<img/>')[0].src = this; 

hay:

var preloadImages = ['{{ MEDIA_URL }}jwplayer/jwplayer.js', 
        '{{ MEDIA_URL }}jwplayer/jwplayer.js.jgz', 
        '{{ MEDIA_URL }}jwplayer/player.swf']; 
var imgs = []; 
for (var i=0; i<preloadImages.length; i++) { 
    imgs[i] = new Image(); 
    imgs[i].src = preloadImages[i]; 
} 

Điều gì làm cho một tốt hơn so với người kia?

+2

Thứ nhất có ba dòng ít hơn. –

+0

bạn không thể tải trước chúng bằng cách đặt chúng dưới dạng thẻ img trong div ẩn? hoặc là điều này cho các yếu tố tự động được thêm vào hoặc đang làm nó với js một cách tốt hơn? – jammypeach

+1

Mặc dù câu trả lời rất có thể là # 2 vì những lý do dưới đây, nó sẽ là một bài tập tốt nếu bạn tự mình đo bằng cách tạo hai tệp html sử dụng các phương pháp khác nhau để tải vài chục hoặc thậm chí hàng trăm hình ảnh. Bạn có thể tự đo lường điều này bằng cách sử dụng firebug/yslow. – Moses

Trả lời

7

Thứ hai là tốt hơn so với thứ nhất, bởi vì JavaScript đơn giản so với bloatware quá mức của jQuery.

Bạn có thể cải thiện thiết bị thứ hai một chút, bằng cách đặt l=preloadImages.length lên trên và sử dụng thiết bị đó trong vòng lặp.

+0

1 cho cả js tinh khiết và tối ưu hóa vòng lặp – jammypeach

+0

'bloatware' là một chút mạnh mẽ của jQuery nói chung, nhưng dù sao: trong trường hợp này bằng cách sử dụng jQuery chắc chắn là bloat vô nghĩa. – jimw

+0

Tôi đồng ý rằng kể cả jQuery chỉ để thực hiện tác vụ này là quá mức cần thiết, nhưng tại sao bạn cho rằng nó cũng không được sử dụng cho một loạt các thứ khác? – nnnnnn

1

Cả hai đều làm tương tự. Đoạn đầu tiên là sử dụng jQuery và đoạn thứ hai thì không. Không có lý do gì để sử dụng jQuery dành riêng cho mục đích này, vì vậy nếu bạn không sử dụng thư viện ở nơi khác, hãy sử dụng phiên bản thứ hai. Nếu bạn đang sử dụng jQuery trên toàn bộ trang web của mình, thì trang đầu tiên cũng ok.

1

Thứ hai nhanh hơn. Đầu tiên là ít đánh máy hơn (bằng cách sử dụng một phương thức iterator mức cao hơn trong jQuery).

Nếu bạn đã có jQuery trong dự án của mình vì các lý do khác, thì tốt hơn là phụ thuộc vào việc bạn có muốn tối ưu hóa tốc độ hoặc kích thước mã hay không.

Ở cấp độ kỹ thuật, có một sự khác biệt thực hiện thực tế. Phiên bản thứ hai giữ một mảng các đối tượng hình ảnh xung quanh trong một biến. Việc đầu tiên cho phép các đối tượng hình ảnh nhận được rác thu thập được.

Các vấn đề liên quan