OVH Cloud OVH Cloud

Image et cache

7 réponses
Avatar
JLM
Bonjour !

Je suis en face d'un soucis pour le moins surprenant.

En effet, j'utilise l'objet Javascript Image pour précharger une image,
et récupérer ses dimensions :

var Image img = new Image();
img.src='toto.gif';
iomg.onload=imageLoad;

function imageLoad()
{
alert("Image chargée : " + img.width + "x" + img.height + " pixels");
}

Tout se passe bien tant que l'image sur mon serveur n'est pas modifiée.
Or, si j'utilise IE6 et si je remplace l'image du serveur par une autre
d'une taille différente, les dimensions que je récupère dans l'objet
Image Javascript sont toujours celles de l'image précédente ! La
nouvelle image a pourtant été correctement téléchargée depuis le serveur
puisque la page affiche bien la nouvelle image. De plus, le pb
n'apparaît pas sous Firefox.

Est-ce un bug du cache d'IE ? Ai-je loupé quelque chose ?

Cordialement,
Jean-Luc

7 réponses

Avatar
ASM

Est-ce un bug du cache d'IE ? Ai-je loupé quelque chose ?


essayer en respectant cet ordre pour les instructions :

var Image img = new Image();
iomg.onload=imageLoad;
img.src='toto.gif';

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM
Bonjour !

Je suis en face d'un soucis pour le moins surprenant.

En effet, j'utilise l'objet Javascript Image pour précharger une image,
et récupérer ses dimensions :

var Image img = new Image();
img.src='toto.gif';
iomg.onload=imageLoad;


et en faisant (exactement dans cet ordre et cette orthographe) :

var img = new Image();
img.onload = imageLoad;
img.src = 'toto.gif';

function imageLoad()
{
alert("Image chargée : " + img.width + " x " + img.height + " pixels");
}


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
JLM
Bonjour !

Je suis en face d'un soucis pour le moins surprenant.

En effet, j'utilise l'objet Javascript Image pour précharger une
image, et récupérer ses dimensions :

var Image img = new Image();
img.src='toto.gif';
iomg.onload=imageLoad;


et en faisant (exactement dans cet ordre et cette orthographe) :

var img = new Image();
img.onload = imageLoad;
img.src = 'toto.gif';

function imageLoad()
{
alert("Image chargée : " + img.width + " x " + img.height + " pixels");
}




Ca ne change rien .. :-(


Avatar
Francis Spiesser
var img = new Image();
img.onload = imageLoad;
img.src = 'toto.gif';

function imageLoad()
{
alert("Image chargée : " + img.width + " x " + img.height + " pixels");
}




Ca ne change rien .. :-(


C'est une bidouille pour blouser la gestion de cache de IE mais ça
devrait fonctionner...
Remplace :
img.src = 'toto.gif';

par

var maintenant= new Date()
img.src = 'toto.gif?'+maintenant;

et dis-nous si c'est ok.

--
______
Francis (enlever .NIPUBNISOUMIS)
"Un synonyme, c'est un mot qu'on écrit pour remplacer celui dont on ne
connaît pas l'orthographe."


Avatar
Francis Spiesser
var maintenant= new Date()
img.src = 'toto.gif?'+maintenant;


Un poil plus "propre" :
img.src = '/images/logoGros.gif?'+maintenant.getTime();

--
______
Francis (enlever .NIPUBNISOUMIS)
Algèbre gouvernementale : 12 mi-nistres, ça fait 6 nistres

Avatar
JLM
var maintenant= new Date()
img.src = 'toto.gif?'+maintenant;


Un poil plus "propre" :
img.src = '/images/logoGros.gif?'+maintenant.getTime();



Oui, effectivement avec un paramètre changeant en plus, ça fonctionne,
mais au détriment de l'utilisation du cache. Etant donné que les images
que je charge font potentiellement partie d'un browser d'images,
j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors
du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que
ça ?

J'ai essayé d'utiliser la propriété complete de l'objet Javascript
Image, et je me suis rendu qu'elle était toujours à false avec IE (alors
qu'elle est correctement positionnée à true par Firefox après son
chargement). Est-ce normal ?

Merci pour les réponses en tout cas ..

Jean-Luc


Avatar
ASM
img.src = '/images/logoGros.gif?'+maintenant.getTime();


Oui, effectivement avec un paramètre changeant en plus, ça fonctionne,
mais au détriment de l'utilisation du cache. Etant donné que les images
que je charge font potentiellement partie d'un browser d'images,
j'aimerais garder le bénéfice du cache pour accélérer l'affichage lors
du retour à une image déjà vue. Le cache d'IE est-il aussi mal conçu que
ça ?


Je ne connais pas IE Windows, mais il ne semble pas être le seul à
"oublier" de vérifier la corrélation de l'image dans son cache avec
celle sur le site (plus particulièrement si les images sont déclarées
dans des css).

J'ai essayé d'utiliser la propriété complete de l'objet Javascript
Image, et je me suis rendu qu'elle était toujours à false avec IE (alors
qu'elle est correctement positionnée à true par Firefox après son
chargement). Est-ce normal ?


Je n'ai jamais réussi à utiliser ce complete de manière fiable

Merci pour les réponses en tout cas ..


Si vraiment c'est pour mettre deS imageS en cache et les ré-utiliser,
à mon idée il vaudrait mieux différencier leurs noms pour chacune.

<script type="text/javascript">
var I = new Array();
var chemin = 'photos/serie_1/';
var nb = 12;
var i = 0;
function affiche() {
if(i == nb) i = 0;
if(document.images) {
document.images['visuel'].src = I[i].src;
i++
}
}
function chargeImg() {
if(i<nb) {
I[i] = new Image();
I[i].onload = chargeImg;
I[i].src = chemin+i+'.jpg';
i++;
}
else {
alert('ok');
i=0;
truc = setInterval('affiche()',200);
}
}
window.onload = chargeImg;
</script>

<img src="" alt="" name="visuel">


exemples:
http://cjoint.com/?ilvTSkPXAE
http://cjoint.com/?ilvVe8rtzh


--
Stephane Moriaux et son [moins] vieux Mac