2009-11-09 2 views
2

J'écris un script PHP pour recadrer une image. Le script remplace l'ancienne image par la nouvelle, mais lorsque je recharge la page (qui est censée prendre la nouvelle image), je vois toujours l'ancienne.image a changé mais apparaît la même dans le navigateur

Si je vérifie mon disque dur (je travaille sur la machine locale) je peux voir que l'image a changé, mais le HTML ne le prend pas. Peut-être que c'est un problème de mise en cache? Comment puis-je le résoudre?

merci, Patrick

Répondre

5

Une technique courante pour garantir que les images ne sont jamais mises en cache consiste à ajouter l'heure actuelle en millisecondes à la fin de l'URL de l'image en tant que paramètre. Votre serveur Web ignorera le paramètre et diffusera la même image à chaque fois, mais votre navigateur (et tout cache intermédiaire) enregistrera un cache manquant car l'URL de l'image est différente.

<a href='/images/someimage.png?d= <?php echo(date("U")); ?> '> 
+0

Mon navigateur est configuré pour ne rien encaisser, donc j'étais proche de fou ... Merci! – Nicsoft

2

Si vous êtes sûr que votre HTML pointe vers le fichier droit; Ctrl + F5?

+0

oui, pointant vers le bon fichier. J'ai cheched la source de la page; En outre, rechargement montre la nouvelle image – patrick

0

Envoyez-vous les en-têtes appropriés pour empêcher le navigateur de mettre en cache l'image?

.: par exemple http://www.badpenguin.org/php-howto-control-page-caching

+0

Certains fournisseurs d'accès à l'aide de squid ou d'autres proxys de mise en cache à plat ignorer cela. Mon fournisseur de secours tombe dans cette foule d'échec d'époque, c'est pourquoi je recule encore quand ma connexion primaire s'éteint. –

+0

Oui, c'est possible, mais si je voudrais d'abord vérifier les problèmes les plus courants avec la mise en cache, et seulement ensuite revenir à ce genre de pratiques ISP. – Palantir

0

Il se pourrait que votre FAI utilise un proxy de mise en cache. Vérifiez l'URL avec BrowserShots pour voir si c'est effectivement le cas. Ma sauvegarde DSL vient d'un fournisseur qui fait cela pour économiser de la bande passante, c'est très ennuyeux. Ils ignorent également chaque en-tête en leur disant de ne pas le faire.

1

Essayez d'ajouter un horodatage à l'URL. Cela empêche la plupart des navigateurs de mettre en cache les images. Exemple: http://localhost/test.jpg?1257783872

Edit: Oh, Ryan a déjà donné une réponse similaire. Pardon.

Questions connexes