Empecher la mise en cache d'une image

Meyer -  
 Meyer -
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?

2 réponses

  1. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
  2. Meyer
     
    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
    1. ElementW Messages postés 5690 Statut Contributeur 1 293
       
      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
    2. Meyer
       
      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