Malheureusement, cela dépend de votre objectif. Si vous prévoyez d'utiliser les images à des fins stylistiques, votre meilleure option est d'utiliser des sprites. http://www.alistapart.com/articles/sprites2
Toutefois, si vous prévoyez d'utiliser les images dans les balises <img>, vous voudrez les précharger avec le programme
function preload(sources)
{
var images = [];
for (i = 0, length = sources.length; i < length; ++i) {
images[i] = new Image();
images[i].src = sources[i];
}
}
(source modifiée tirée de Quelle est la meilleure façon de précharger plusieurs images en JavaScript ? )
en utilisant new Image()
ne nécessite pas l'utilisation des méthodes DOM, mais une nouvelle demande pour l'image spécifiée sera ajoutée à la file d'attente. Comme l'image n'est, à ce stade, pas réellement ajoutée à la page, il n'y a pas de nouveau rendu impliqué. Je recommanderais, cependant, d'ajouter ceci à la fin de votre page (comme tous vos scripts devraient l'être, si possible) pour éviter qu'il ne retarde des éléments plus critiques.
Edit : Edited to reflect comment quite correctly pointing that separate Image
sont nécessaires pour fonctionner correctement. Merci, et c'est ma faute si je ne l'ai pas vérifié de plus près.
Edit2 : modifié pour rendre la réutilisabilité plus évidente
Edit 3 (3 ans plus tard) :
En raison des modifications apportées à la manière dont les navigateurs traitent les images non visibles (display:none ou, comme dans cette réponse, jamais ajoutées au document), une nouvelle approche du préchargement est préférable.
Vous pouvez utiliser une requête Ajax pour forcer la récupération rapide des images. En utilisant jQuery, par exemple :
jQuery.get(source);
Ou dans le contexte de notre exemple précédent, vous pourriez faire :
function preload(sources)
{
jQuery.each(sources, function(i,source) { jQuery.get(source); });
}
Notez que cela ne s'applique pas au cas des sprites qui sont très bien tels quels. C'est juste pour des choses comme les galeries de photos ou les sliders/carrousels avec des images où les images ne se chargent pas parce qu'elles ne sont pas visibles initialement.
Notez également que cette méthode ne fonctionne pas pour IE (ajax n'est normalement pas utilisé pour récupérer des données d'image).