> Tous les forums > Forum des Webmasters
 Problème affichage images en cacheSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
jmsch
  Posté le 27/02/2016 @ 17:00 
Aller en bas de la page 
Petit astucien

Bonjour,

j'ai une application PHP + HTml + Smarty qui tourne en local avec Wampserver et Firefox.
Le tout fonctionne correctement sauf pour ma page de statistique ou les images affichées sont toujours celle du cache du navigateur.
Besoin de faire F5 à chaque fois pour actualiser.

Dans mon header j'ai mis ces lignes et ca ne résous pas le problème.

<HEAD>
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Expires" content="0">
</HEAD>

Pour le fonctionnement du scripte, j'ai une page PHP qui génère les images de statistiques via la librairie JpGraph
A chaque nouveau calcul les anciennes images sont effacées et remplacées par les nouvelles.
Tout ça fonctionne... les anciennes images sont bien effacées et remplacées par les nouvelles, c'est vraiment un problème de cache.

CA fait plusieurs jours que je tourne en rond...
Comment faire pour interdire au navigateur de mettre en cache ?

Merci

Publicité
zoulouman
 Posté le 28/02/2016 à 12:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Salut,

L'header "Expires" doit contenir une date. Si tu ne veux pas de cache, donne une date passée.

Ex : Wed, 09 Mar 2014 11:44:09 GMT

Pas certain que ça marche en HTML si c'est déjà défini en PHP ou dans un .htaccess mais tu verras.

jmsch
 Posté le 28/02/2016 à 23:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut,

j'ai essayé et ça ne fonctionne pas non plus....un dimanche sur le pc pour ne pas avancer.
Sur 10 calcules de stats j'ai 8 affichages qui ne correspondants pas aux dernières images par contre si je vais voir dans le dossier ou elles sont enregistrées ce sont bien les dernières qui s'y trouvent.
Pour tester j'ai désactivé le cache de Firefox.... ça ne résous pas le problèmes.

La seul option qui fonctionne c'est de recharger la page avec un bouton js,
<A href="javascript:window.location.reload(true)">Recharger la page </A>

C'est mieux que rien, lol, mais je voudrais tout de même comprendre pourquoi j'ai toujours le cache qui s'affiche alors qu'il est désactivé et vidé de partout.



Modifié par jmsch le 28/02/2016 23:30
zoulouman
 Posté le 01/03/2016 à 11:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Tu as accès aux .htaccess ? Tu ne dis pas grand chose...

Si tu n'as créé aucun .htaccess comment est fait ton fichier de config Apache ?

Au pire, tu peux essayer en plaçant un paramètre GET qui change tout le temps derrière chaque image.

<img src="./example.com/image.png?<?php echo time(); ?>" alt="image" />

Bien sûr, tes fichiers .html deviendront des .php pour que ça fonctionne, sinon le PHP sera affiché.



Modifié par zoulouman le 01/03/2016 11:44
jmsch
 Posté le 01/03/2016 à 12:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Oui j'ai accès au fichier htaccess. Comme je suis sur mon pc en local j'ai un accès complet à tout.

Pour le fonctionnement une page PHP se charge de calculer les statistiques et via la librairie JPGRAPH je crées les images.
Après via smarty le template statistique, qui est une page html avec des liens en dur vers les images est affiché.

<img src="graphique/chiffre_mois.png" title="chiffre_mois" alt="Graph chiffre par mois"/>

Les nouvelles images son créés à chaque calcul. Les anciennes sont effacées et remplacées par les nouvelles.

Ce que j'ai déjà essayé.... :

Dans le header du Template HTML j'ai rajouté

<META http-equiv="Cache-Control" content="no-cache"/>

<META http-equiv="Pragma" content="no-cache"/>

<META HTTP-EQUIV="no-cache" CONTENT="Attribut"/>

<META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 27 Sep 2007 14:00:00 GMT"/>

Au début du Template et à la fin j'ai mis {nocache} ....... {/nocache} pour éviter que smarty mette en cache

j'ai désactivé la mise en cache dans les options du navigateur.

Et avec tout ça, ça ne fonctionne toujours pas correctement.
Il arrive quelques fois que ce sont les bonnes images qui s'affichent directement mais la plus part du temps je suis obligé de réactualiser la page avec F5 ou avec le lien <A href="javascript:window.location.reload(true)">Recharger la page </A> .



Modifié par jmsch le 01/03/2016 20:45
zoulouman
 Posté le 02/03/2016 à 12:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Tu utilises Smarty ? Tu aurais du le dire.

Malheureusement, je ne connais pas ou très, très peu ce moteur de templates.

Tu ne peux pas créer des pages PHP qui afficherait ceci, par exemple :

echo '<img src="graphique/chiffre_mois.png?'. time(). '" title="chiffre_mois" alt="Graph chiffre par mois"/>';

Pour chaque image, essaye d'ajouter .png?'. time(). '" title="

Ca te donnera des images avec cette gueule : image.png?1456854122

Souvent, les navigateurs ne font pas de cache si il y a un paramètre GET qui suit le fichier. Il faut essayer.

Sinon, mettre {nocache}, c'est bien gentil, mais si ton fichier de config Apache ordonne la mise en cache, il va passer outre puisqu'il définira les headers avant le fichier. C'est pour ça que je te demandais de me montrer ce fichier (httpd.conf).



Modifié par zoulouman le 02/03/2016 12:10
jmsch
 Posté le 02/03/2016 à 21:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ta du lire mon 1er post trop vite. J'avais mis Smarty dedans. Lol

J'ai essayé avec ça .png?'. time(). '
et c'est pareil des fois ce sont les bonnes images qui s'affichent et la fois après ce sont les anciennes.

Une solution qui fonctionnerait serait de mettre un reload dans le template html
Le soucis c'est que la méthode ne permet pas de passer une variable et donc $i est réinitialisé à chaque reload donc la fonction tourne en boucle et charge la page à l'infinie
Aurais tu une idée?

{if $i==1}
<SCRIPT LANGUAGE="JavaScript">window.location.reload(true)</script>
{/if}



Modifié par jmsch le 02/03/2016 21:15
jmsch
 Posté le 05/03/2016 à 18:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Le problème est réglé.

Dans le template HTML j'ai mis la ligne de code ci dessous et comme je ne peux pas passer de variable avec la fonction reload de JS
je crée coté PHP la variable $reload='oui'; et un cookie.
La variable qui sera mon test coté HTML pour lancer ou non la fonction JS
Le cookie me servira pour vider la variable lors du reload afin que le scripte ne tourne pas en boucle.
C'est peut être pas très beau comme méthode mais ça a le mérite de fonctionner. Lol

Dans le template HTML smarty

if $reload==oui}<SCRIPT LANGUAGE="JavaScript">window.location.reload(true)</script>{/if}

coté PHP

if (isset($_COOKIE["reload "]) AND $_COOKIE['reload']=='oui')

{
setcookie('reload ');
unset($_COOKIE['reload ']);
$reload ='non';

}



Modifié par jmsch le 05/03/2016 18:56
zoulouman
 Posté le 11/04/2016 à 08:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Salut,

Ravi de voir que ça marche.

Je suis désolé pour la longue absence, mon PC m'a lâchement abandonné. Plus d'un mois sans matériel en attendant d'en avoir un autre...

Encore désolé.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
22,18 €Clé USB Sandisk Ultra 128 Go à double connectique USB 3.1 Type A et C à 22,18 €
Valable jusqu'au 03 Mars

Amazon fait une promotion sur la clé USB Sandisk Ultra 128 Go à double connectique USB 3.1 Type A et C qui passe à 22,18 €. Cette clé USB  dispose d'un connecteur réversible USB Type C et d'un connecteur classique de type A. Grâce à elle, transférez en toute simplicité et rapidement (jusqu'à 150 Mo/s) vos fichiers entre vos smartphones, tablettes et ordinateurs. On la trouve ailleurs à plus de 40 €.

 


> Voir l'offre
26,99 €Carte mémoire microSDXC UHS-I SanDisk Ultra 200 Go à 26,99 €
Valable jusqu'au 02 Mars

Amazon fait une promotion sur la mémoire microSDHC UHS-I SanDisk Ultra 200 Go qui passe à 26,99 € livrée gratuitement. On la trouve ailleurs à partir de 40 €. Cette carte mémoire offre des vitesses jusqu'à 90 Mo/s.


> Voir l'offre
48,50 €SSD Crucial BX500 480 Go à 48,50 €
Valable jusqu'au 03 Mars

Amazon propose actuellement le SSD Crucial BX500 480 Go à 48,50 € livré gratuitement alors qu'on le trouve ailleurs à plus de 60 €. Ce SSD offre des débits de 540 Mo/s en lecture et 500 Mo/s en écriture. Le SSD est accompagné du logiciel Acronis true image qui vous permettra de transférer tout le contenu de votre ancien disque dur sur le SSD. Il est garanti 3 ans. 


> Voir l'offre

Sujets relatifs
Problème affichage images
probleme d'affichage images
Problème d'affichage gifs/images sur site[Résolu]
Problème affichage images sous IE => Résolu
Probleme d'affichage d'onglet dans Google
Probleme d'affichage sur page d'accueil de mon SITE
affichage successif d'images commentées
probleme de défilement d'images
Problème d'affichage google chrome
l'affichage d'images ne se fait pas correctement
Plus de sujets relatifs à Problème affichage images en cache
 > Tous les forums > Forum Forum des Webmasters