2009-12-31 9 views
2

J'ai un outil de téléchargement d'image écrit en php.Possible d'effacer le cache du navigateur avec le code php?

Les utilisateurs peuvent choisir un fichier, et il est téléchargé avec un certain nom de fichier, puis si l'utilisateur regrette de choisir ce fichier, ils peuvent cliquer sur l'entrée de fichier et télécharger un autre fichier, mais le navigateur met en cache la première image téléchargée. Et au lieu de la deuxième image, les navigateurs affichent le premier à la place, même si c'est une autre image téléchargée.

kindof difficile à expliquer ...

Comment puis-je résoudre ce problème?

Merci

Répondre

12

Désactivez la mise en cache des images dans votre serveur web ou ajouter une chaîne de requête aléatoire à la src de votre image.

Par "chaîne de requête aléatoire", j'entends que vous ajoutez un élément qui change à chaque requête à l'URL de l'image. Quelque chose comme ceci:

<img src="http://www.example.com/image.jpg?<?php echo Time() ?>" /> 

Time() retourne le timestamp courant et changera à chaque requête, et ainsi l'URL sera toujours différent et forçant ainsi le navigateur pour télécharger l'image à chaque fois.

+1

ce qui est une chaîne de requête aléatoire, soin d'expliquer cette partie un peu plus s'il vous plaît? –

+1

C'est juste un moyen de s'assurer que le navigateur n'aura jamais vu cette URL spécifique et ne tentera donc pas d'utiliser une version en cache. En ajoutant time() à la fin de l'URL, @Jan s'assure que l'URL est unique. –

+0

nous perdons l'avantage de l'élément en cache pour la deuxième charge –

0

J'ai déjà vu quelque chose comme ça auparavant, mais c'était l'inverse parce que j'envoyais un fichier du serveur vers le navigateur. Le nom du fichier n'a pas changé, mais le contenu aurait dû l'être, mais il a continué à afficher le contenu du fichier d'origine.

Je l'ai fixé en changeant un paramètre dans php.ini:

session.cache_limiter = nocache 
Questions connexes