2012-04-20 9 views
5

¿Cuál es la mejor manera de pre-carga de imágenes:imágenes manera de pre-carga más eficientes

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

Lo hace a uno mejor que el otro?

+2

El primero tiene tres líneas menos. –

+0

¿No puedes simplemente precargarlos teniendo como etiquetas img en un div oculto? ¿o es esto para elementos añadidos dinámicamente o lo está haciendo con js de una manera mejor? – jammypeach

+1

Si bien es probable que la respuesta sea # 2 por los motivos que se detallan a continuación, sería un buen ejercicio si lo midiera usted mismo creando dos archivos html que usen los diferentes métodos para cargar varias docenas, o incluso cientos de imágenes. Puedes medir esto tú mismo usando firebug/yslow. – Moses

Respuesta

7

El segundo es mejor que el primero, porque es JavaScript simple frente al bloatware excesivo de jQuery.

Puede mejorar el segundo un poco, configurando l=preloadImages.length por adelantado y utilizándolo en el ciclo.

+0

+1 para js puros y optimización de bucle – jammypeach

+0

'bloatware' es un poco fuerte de jQuery en general, pero +1 no obstante: en este caso, jQuery ciertamente es inútil. – jimw

+0

Acepto que incluir jQuery solo para hacer esta única tarea es exagerado, pero ¿por qué asumes que no se usa también para muchas otras cosas? – nnnnnn

1

Ambos hacen lo mismo. El primer fragmento está usando jQuery, y el segundo no. No hay ninguna razón para utilizar jQuery exclusivamente para este fin, por lo que si no está utilizando la biblioteca en otro lugar, vaya con la segunda versión. Si está utilizando jQuery en su sitio, entonces el primero también está bien.

1

El segundo es más rápido. El primero es menos tipado (mediante el uso de un método de iterador de nivel superior en jQuery).

Si ya tiene jQuery en su proyecto por otras razones, entonces, qué es mejor depende de si prefiere optimizar la velocidad o el tamaño del código.

En un nivel técnico, hay una diferencia de implementación real. La segunda versión mantiene una matriz de objetos de imagen en una variable. El primero permite que los objetos de la imagen obtengan basura recolectada.

Cuestiones relacionadas