Empecher la mise en cache d'une image

Fermé
Meyer - 3 mars 2014 à 00:06
 Meyer - 3 mars 2014 à 12:46
Bonjour,

j'aimerais que mon application Windows 8 ne mette pas en cache une certaine image (afin de la changer chaque jour ) sauf que c'est ce qui se produit et selon les mecs de Microsoft il faut voir du côté serveur avec par exemple un fichier .htaccess , sauf que j'ai essayé sur mon hébergement free.fr et un autre site aussi et ça ne marche pas voire bloque l'accès au site hébergé sur ces serveurs (ainsi qu'à l'image voulue ) pourriez vous m'aider svp?


A voir également:

2 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
3 mars 2014 à 12:18
'lut, quelque soit le serveur que tu utilises, il faut faire en sorte que l'en-tête HTTP
Cache-Control: no-cache
soit transféré avec l'image, il désactive la mise en cache. Les anciens navigateurs ne gérant que HTTP/1.0 ne comprennent pas
Cache-Control
, aussi peut-il être utile de spécifier
Pragma: no-cache
.

Free.fr utilise des serveurs Apache, et il faut se servir du module mod_headers pour controler les en-têtes, mais chez free, le .htaccess ne sert presque à rien; il n'autorise que très très très peu de commandes (voir ici, paragraphe Les directives autorisées), et l'inclusion d'un
<IfModule>
donne une erreur 500...
Tu est donc coincé; une autre solution est de se servir de PHP pour paramétrer les en-têtes:
<?php
header('Cache-Control: no-cache');
header('Pragma: no-cache');
readfile("adresse de l'image");
?>
0
Merci pour ta réponse mais dans ce cas comment dois-je faire pour paramétrer les en-têtes en php SVP?
Je n'ai pas de bases en php mais est-ce un fichier à rajouter en php A COTE de l'image ou bien autre chose?

Merci encore ^^
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 3/03/2014 à 12:35
En PHP, la fonction
header()
paramètre un en-tête HTTP selon ce qu'on lui met comme paramètre;
header('Pragma: no-cache');
résultera en un en-tête
Pragma: no-cache
.
Il faut ajouter ce fichier à coté de l'image, et le mettre dans ta balise:
<img src="monimage.php" />
. Explication: le PHP va paramétrer les en-têtes comme il faut, puis envoyer le contenu de l'image. Il manque un header cependant, celui qui indique le type de données envoyées:
Content-Type
; voici une meilleure version:
<?php
$adresse = "[ICI METTRE L'ADRESSE DE L'IMAGE (relative à l'emplacement du fichier php)]"
header('Cache-Control: no-cache');
header('Pragma: no-cache');
header('Content-Length: '.filesize($adresse));
header('Content-Type: [TYPE]');
readfile($adresse);
?>
Il faut remplacer [TYPE] par image/jpeg si ton image est en .jpg/.jpeg ou par image/png si c'est du .png .
0
Merci encore mais pour ce qui est de la balise <img src="monimage.php" /> ou dois-je la mettre?

PS : si je comprend bien l'application va charger un fichier php pour charger l'image qu'il contient?
PS2 : si ca ne te dérange pas de continuer à m'aider voici mon email au cas où meirseb at gmail com
.
0