2012-04-20 18 views
5

Che è un modo migliore di precaricare le immagini:immagini modo per pre-caricare più efficienti

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

o:

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]; 
} 

Ciò che rende uno meglio dell'altro?

+2

Il primo ha tre linee in meno. –

+0

non puoi semplicemente precaricarli considerandoli come tag img in un div nascosto? o è questo per elementi aggiunti dinamicamente o lo sta facendo con js in un modo migliore? – jammypeach

+1

Anche se la risposta è molto probabile # 2 per i motivi seguenti, sarebbe un buon esercizio se lo misurassi tu stesso creando due file html che usano i diversi metodi per caricare diverse dozzine o anche diverse centinaia di immagini. Puoi misurare tu stesso usando firebug/yslow. – Moses

risposta

7

Il secondo è migliore del primo, perché è un semplice JavaScript contro l'eccessivo bloatware di jQuery.

È possibile migliorare leggermente il secondo, impostando l=preloadImages.length in primo piano e utilizzando quello nel ciclo.

+0

+1 per ottimizzazione js e loop puro – jammypeach

+0

'bloatware' è un po 'forte di jQuery in generale, ma comunque +1: in questo caso usando jQuery è sicuramente inutile. – jimw

+0

Sono d'accordo sul fatto che includere jQuery solo per eseguire questa operazione è eccessivo, ma perché pensi che non sia usato anche per un sacco di altre cose? – nnnnnn

1

Entrambi fanno la stessa cosa. Il primo frammento utilizza jQuery e il secondo no. Non c'è motivo di usare jQuery esclusivamente per questo scopo, quindi se non stai utilizzando la libreria altrove, vai con la seconda versione. Se stai usando jQuery in tutto il tuo sito, anche il primo va bene.

1

Il secondo è più veloce. Il primo è meno digitando (usando un metodo di iteratore di livello superiore in jQuery).

Se si dispone già di jQuery nel progetto per altri motivi, la scelta migliore dipende dal fatto che si preferisca ottimizzare per la velocità o la dimensione del codice.

A livello tecnico, c'è una differenza di implementazione effettiva. La seconda versione mantiene una matrice degli oggetti immagine attorno a una variabile. Il primo consente agli oggetti immagine di ottenere la garbage collection.

Problemi correlati