Rechercher : dans
Par :

Soluce ! Eviter le cache de l'explorateur web

Dernière réponse le 9 oct 2009 à 22:23:59 RideZeBigOne, le 12 oct 2004 à 19:24:14 
 Signaler ce message aux modérateurs

Bonjour à tous!

j'avais posté il y a qqles semaines un message concernant un problème lié au cache d'IE : je créée une image (avec JPGraph) qui n'était pas rafraîchie par IE car elle porte tjrs le même nom.

voir exactement le pb ici (post précédent :
http://www.commentcamarche.net/forum/affich-1035977-Php-actu­aliser-image-%E0-cause-cache-ie

Aprés de longues recherches et autres tentatives de code tordus j'ai finalement trouvé sur un autre forum (anglais) une soluce aussi simple qu'efficace :

Il suffit d'utiliser la fonction time d'UNIX. Plus besoin des headers META avec le no-cache etc...
en voici qqles exemple:

<img src="http://www.mysite.com/myimage.jpg?<?echo time()?>">


echo ('<img src="../mydir/mypage.php?' .time(). '">' . '<br><br>'); 


Pour les explications voir ici:
http://forums.devshed.com/showthread.php?s=&threadid=40363&highlight=jpgraph+time

ou encore ici :

http://jpgraph.intellit.nl/viewtopic.php?t=349

J'espère que cela vous servira si vous avez ce genre de pb!!

A+
RideZeBigOne
http://www.sport2oufs.fr.st

Meilleures réponses pour « soluce ! Eviter le cache de l'explorateur web » dans :
Cacher une archive dans une image Voir Introduction Cacher une archive dans une image Retrouver l'archive cachée Remarques importantes À voir également Introduction Cette astuce présente une méthode pour cacher un fichier dans un autre. En réalité, on va faire une sorte de...
[Internet] Vider le cache Internet VoirVider le cache Internet Le cache Internet accapare de la place sur le disque dur au fur et à mesure de vos passages sur le web. Pour ne pas arriver à saturation de cet espace, vous devez vider ce cache, le supprimer. Par cache Internet, on...
[Internet] Le cache d'Internet Explorer VoirLorsque vous naviguez sur le WEB, votre navigateur met les pages Web dans un cache, c'est-à-dire qu'il enregistre les pages, images et autres fichiers sur votre PC. Grâce à ce cache, votre navigateur n'aura plus à télécharger, à chaque visite, la...
Disparition des Options des dossiers dans l'Explorateur VoirUn problème de virus, ou un endommagement de fichiers système peuvent provoquer la disparition du menu "Options des Dossiers" (Outils) de l'Explorateur Windows. Pour récupérer "Options des dossiers", effectuer la manipulation suivante à la...
Télécharger Web Developer Toolbar VoirWebDeveloper est une extension firefox représentant une formidable boîte à outils pour examiner et manipuler les pages web. On peut: Activer/Désactiver java, javascript, HTTP Referer, cache... Manipuler les cookies, les désactiver par domaines,...
Installation d'un serveur Web sous Linux (Apache, PHP et MySQL) VoirIntroduction Un serveur web est un logiciel permettant de rendre accessibles à de nombreux ordinateurs (les clients) des pages web stockées sur le disque. Cette fiche pratique explique comment installer le serveur web Apache sur un système de type...
Les Méta Tags VoirIntroduction aux méta tags Les métadonnées sont des informations situées au sein d'un document afin de le décrire. Les métadonnées sont ainsi utilisées par les moteurs de recherche lors du référencement de la page web. Grâce à ces balises non...
Webmastering - Ergonomie d'un site web VoirNotion d'ergonomie L'ergonomie est l'utilisation de connaissances scientifiques relatives à l'homme (psychologie, physiologie, médecine) dans le but d'améliorer son environnement de travail. L'ergonomie se caractérise généralement selon deux...

1

Nicodème, le 19 oct 2006 à 05:41:58
  • +1

Immense merci, c'est carrément génial, voilà une nuit entière que je cherchais une solution...
C'est beaucoup plus simple que de changer le nom de l'image.
Je ré-explique à ma manière :

Le code PHP avec la fonction time() génère un code html du type :
<img src="../../images/soleil.gif?1161228656">

IE trouve et affiche l'image "soleil.gif" sans broncher,
mais cette astuce bluffe le cache qui compare "soleil.gif?1161228656"
Or, comme ce chiffre change toutes les secondes, il recharge l'image à chaque nouvel appel de la page...

Merci encore, tu me sauves la vie !
Nicodème

Répondre à Nicodème

2

beng, le 15 nov 2006 à 19:10:59

J'ai une chose a dire MERCI!!!!!!!!!!!!!!!!!!!!!!!!!!!

voila plusieurs heures que je cherche et je tombe sur ce topic
et je commencai a me décourager car meme les header ne marchai pas avec moi.
c'est EXACTEMENT mon probleme

merci encore!!

Répondre à beng

3

Gihef, le 15 nov 2006 à 19:32:23

Merci d'être revenu nous montrer ça.
    L'intelligence artificielle se définit comme le contrair­e de la bêtise naturelle.

Répondre à Gihef

4

prg11, le 27 déc 2006 à 12:42:49

Salut
Je veut realiser un graphe qui affiche la temperature d'une journée de travailler(24h:00)
ces graphe est en temp reél .
moi je veut fair sa simulation: c'est a dire crier une table dans ma base de données et al modifier a chaque fois (chaque les 5 seconde par exemple) .
comment fair un graphe en temp reél?
j'utilise le jpgraphe et le winxp et serveur apache et php 4.3.3 et mysqle.
j'ai besoin de se script aider moi et serais la pour tout eautre question

Répondre à prg11

5

ninive, le 9 jan 2007 à 17:35:47

Super, simple et fonctionnel.

Merci !!

Répondre à ninive

6

atomik, le 16 avr 2007 à 20:22:42

Merci beaucoup. ça m'a grandement dépanné!

Répondre à atomik

7

rasdri, le 25 mai 2007 à 12:14:09
  • +1

Ouahhhhhhhhhhhhhh !!!!!!!!
une 1/2 journée à chercher ca !!!
merci bcp!!
IE fait vraiment chier, superbe astuce
merci encore

Répondre à rasdri

8

totoduweb, le 18 jun 2007 à 15:00:26

MERCIIIIIIIIIIIIIIIIIIIIIIII +++ d'avoir pris le temps de nous partager ta solution a ce ...?:XX;.. de IE7 !
Cette solution est géniale :)

comme d'autres avant... je cherchais depuis longtemps

Répondre à totoduweb

9

masternico, le 15 jui 2007 à 15:56:08

ça c'est de la soluce béton... fallait y penser

Répondre à masternico

10

masternico, le 15 jui 2007 à 15:57:09

Par contre, il faudrait déclarer ce post "résolu"

Répondre à masternico

11

Nicolas, le 2 oct 2007 à 16:42:04

Bonjour,
la solution est loin d'etre la meilleure car les images vont toutes s'empiler dans le disque dur du coté serveur !

Cordialement

Répondre à Nicolas

19

hihi, le 8 mai 2008 à 15:19:50

Ca s empliera dans le cache coté client uniquement ... vu que les images sont générés en dynamique par un script php par exemple

Répondre à hihi

12

MMMX, le 8 déc 2007 à 21:40:08

ABSOLUMENT GENIAL !!!!

Ca fait plusieur semaines que je traficotte mon code pour essayer de parer le problème, et enfin, je tombe sur ce topic ! Mille mercis à toi RideZeBigOne !!!

Petit message à Nicolas : tu dénigres une solution qui fonctionne parfaitement, sans faire de proposition ... très constructif comme commentaire. Ca ca nous permet vraiment d'avancer. Encore merci d'être passé !

Répondre à MMMX

13

masternico, le 8 déc 2007 à 22:44:19

+1 MMX
Je ne comprends pas très bien pourquoi les images s'entasseraient coté serveur? le serveur envoi toujour la même image, c'est plutôt coté client que ça s'entasse.
De toute façon je ne crois pas qu'il existe de meilleur tour de passe passe pour contourner la mise en cache vue que chaque browser a ses propres paramètres. Ce qui va marcher chez l'un ne marchera peut être pas chez l'autre.
Pour ma part, je maintiens que la soluce est bien. A l'utilisateur de vider son cache de temps en temps.

Répondre à masternico

14

doblern, le 9 déc 2007 à 00:55:41

Salut à tous,

je n'ai pas bien compris la soluce,
il s'agit de créer un filename unique sur l'image tel que toto.jpg123456 ?
ou il s'agit d'une autre solution moin crade ?

Merci d'avance pour vos réponses.

Répondre à doblern

15

masternico, le 9 déc 2007 à 01:16:14

Salut à toi (le renegat... pardon... des restes de jeunesse)
En fait, le nom des images sur ton serveur ne change pas, tu ne change pas non plus de ligne dans ton script qui retourne l'image (dans l'exemple, c'est mypage.php).
La seule chose qui change, c'est le lien d'appel de la page. C'est toute la beauté du truc en fait. Comme le lien d'appel change à chaque fois, le browser pense qu'il sagit d'une nouvelle page et donc écoute la réponse du serveur et donc reçoit la bonne image.
Sinon, en l'abscence de cette astuce, comme le lien est le même d'un appel à l'autre, le browser se contente d'aller chercher la copie des éléments graphiques qui se trouve dans son cache.
Maintenant, le cache pourrait quasiment être désactivé par défaut vu les vitesses de transfert actuels.
La zone de cache était très utilile en des temps anciens, quand on parlait encore de ligne RTC et modem 56k. Car alors, quand il sagissait d'ouvrir une page et d'attendre jusqu'à une minute pour les pages les plus lourdes, il était pratique de récupérer les éléments graphiques déja téléchargé plutôt que de tout recommencer. Cela faisait gagner un temps fou.
J'ai monté un petit ciber-café à un moment avec 10 machine et un serveur avec modem 56K dans un coin reculé du costa rica (c'est pas du pipot) et là, je pouvait dire que ça ramait. Les touristes cliquaient sur un lien et attendaient plusieurs minutes avant d'avoir leur pages.
J'ai donc installé un proxy sur le serveur qui se chargeait d'orienter les paquet vers les machines (c'est son rôle) mais surtout, il centralisait le cache. Et là, oh miracle, les pages se chargeaient en un clein d'oeil...
aaaaaah... nostalgie...
Allez, bonne nuit, je vais me coucher

Répondre à masternico

37

chldc, le 15 jui 2009 à 17:37:53

De nombreux mois plus tard je tombe sur ta solution : magnifique !
Je manipule des images svg en php je n'en pouvais plus de réactualiser ce cadre :
'<embed src="'.$MonDossier.'/'.$NomImage.'svg?'.time().'">'
Merci encore !

Répondre à chldc

16

doblern, le 9 déc 2007 à 01:49:14

Merci pour ta réponse masternico,

je comprend bcp mieu la solution qui est proposée et il est donc vrai que c'est une bonne solution.
Auparavant, je pensais que c'était une solution avec timestamp inclu dans le filename (ce qui est vraiment crade pour le serveur).

Merci à tous pour la solution.

Nicolas.

Répondre à doblern

17

2nys, le 8 mar 2008 à 18:18:33

Bravo et encore bravo, des heures à chercher pour trouver ici.

Et ca fonctionne aussi sur les input de type image!

echo '<input type=image src="image.png?'.time().'" name="name" value="value" alt="alt">';

Répondre à 2nys

18

cyrilkiller, le 15 avr 2008 à 19:32:55

Vraiement un grand merci

Répondre à cyrilkiller

20

jms6501, le 10 jun 2008 à 16:41:41

Cet astuce, c'est une perle !!!!

Merci !

Répondre à jms6501

21

Am3d64, le 14 jun 2008 à 23:13:14

Merci ca fonctionne nikel,

Perso j utilse l'astuce sur une page d'administration (dans la colone de gauche j'upload l'image via un formulaire et dans la colone de droite j'ai un apercu via un include de la page où je modifie la photo) tout ca sur une page protegé via un .htaccess et ca passe !!!

Seule petite modife que j ai apporté au code c'est:

<img src="http://www.mysite.com/myimage.jpg?<?php echo time() ?>">

plutot que:

<img src="http://www.mysite.com/myimage.jpg?<?echo time()?>">


je sais pas si ca a une grande importance mais moi ca passait pas bien sans <?php et l'espace apres time()

Encore une nuit blanche que je ne regrette pas

Répondre à Am3d64

30

puxor, le 27 avr 2009 à 23:52:27

Très belle astuce, fallait juste y penser =)

Répondre à puxor
Collection CommentÇaMarche.net