Probleme avec le refus de mise en cache !

Probleme avec le refus de mise en cache ! - PHP - Programmation

Marsh Posté le 24-07-2004 à 23:24:34    

Bonjour.
 
Tout d'abord si le sujet a déja été traité excusez moi mais après une petite recherche je n'ai pas trouvé.
 
Mon probleme donc : j'ai un script php tout con qui se trouve dans un repertoire avec une liste d'images. Il renvoie en tant qu'image une des images, tirée au sort.
 
En gros ca donne ca :
 

Code :
  1. <?php
  2.   $first = 1;
  3.   $number = 20;
  4.   $filename = "picture".sprintf("%02d", rand($first, $first + $number)).".jpg";
  5.   $fd = fopen($filename, "r" );
  6.   header("Content-Type: application/octet-stream" );
  7.   header("Content-Length: ".filesize($filename));
  8.   header("Content-Disposition: attachment; filename=$filename" );
  9.   readfile($filename);
  10. ?>


 
Tout fonctionne bien a ce niveau, maintenant j'aimerais forcer la non mise en cache de l'image générée via ce script, en gros je voudrais que sur une meme page, si on a deux img avec comme source ce script php, l'image ne soit pas la meme
 
J'ai donc ajouté ca dans le script (trouvé sur php.net):
 

Code :
  1. // Date du passé
  2. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
  3. // toujours modifié
  4. header("Last-Modified: " . gmdate("D, d M Y H:i:s" ) . " GMT" );
  5. // HTTP/1.1
  6. header("Cache-Control: no-store, no-cache, must-revalidate" );
  7. header("Cache-Control: post-check=0, pre-check=0", false);
  8. // HTTP/1.0
  9. header("Pragma: no-cache" );


 
Cependant ca ne marche pas, les images sont identiques sur une meme page.
 
J'ai zieuté vite fait dans la conf de mon Apache mais sans avoir rien vu qui pourrait clocher au niveau du cache (Apache 1.3.29)...
 
Je commence par conséquent à croire que ça pourrait venir des clients Web (j'ai essayé avec Konqueror 3.2, Firefox 0.9 et Internet Explorer 6.0 et pour tous ca fait le meme truc)...
 
Si ce n'est pas ça quelqu'un aurait il une idée pour me débloquer parce que là je ne voies pas trop...
 
Ca doit pourtant bien etre faisable :)
 
Merci


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 24-07-2004 à 23:24:34   

Reply

Marsh Posté le 25-07-2004 à 02:02:11    

tu es vraiment obligé de le gérer comme ça ? Sinon passe par une fonction du style :  
 

Code :
  1. function getImageAléatoire($repertoire)
  2. {
  3.     $first = 1;
  4.     $number = 20;
  5.     $filename = $repertoire."picture".sprintf("%02d", rand($first, $first + $number)).".jpg";
  6.     echo file($filename);
  7. }


 
qui te retourne le même résultat que tu veux :)


Message édité par Lex le 25-07-2004 à 02:03:12
Reply

Marsh Posté le 25-07-2004 à 10:35:42    

non ca marche pas... je voies pas comment ça marcherait :o je veux que sur une meme page html avec deux images ayant pour src le meme php les deux images soient differentes
 
personne sinon :( ?


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 25-07-2004 à 10:38:19    

Nenelle a écrit :

non ca marche pas... je voies pas comment ça marcherait :o je veux que sur une meme page html avec deux images ayant pour src le meme php les deux images soient differentes
 
personne sinon :( ?


 
tu as essayé avec quel navigateur ?  

Reply

Marsh Posté le 25-07-2004 à 10:39:16    

c'est marqué dans le message initial :
 
(j'ai essayé avec Konqueror 3.2, Firefox 0.9 et Internet Explorer 6.0 et pour tous ca fait le meme truc)


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 25-07-2004 à 10:40:55    

désolé, j'avais zappé.
 
tu peux poster le code tel qu'il est actuellement

Reply

Marsh Posté le 25-07-2004 à 10:42:40    

vi voila :
 

Code :
  1. <?php
  2.   // Date du passé
  3.   header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
  4.  
  5.   // toujours modifié
  6.   header("Last-Modified: " . gmdate("D, d M Y H:i:s" ) . " GMT" );
  7.  
  8.   // HTTP/1.1
  9.   header("Cache-Control: no-store, no-cache, must-revalidate" );
  10.   header("Cache-Control: post-check=0, pre-check=0", false);
  11.  
  12.   // HTTP/1.0
  13.   header("Pragma: no-cache" );
  14.  
  15.   $first = 1;
  16.   $number = 20;
  17.   $filename = "picture".sprintf("%02d", rand($first, $first + $number)).".jpg";
  18.   $fd = fopen($filename, "r" );
  19.   header("Content-Type: application/octet-stream" );
  20.   header("Content-Length: ".filesize($filename));
  21.   header("Content-Disposition: attachment; filename=$filename" );
  22.   readfile($filename);
  23. ?>


 
peut etre que l'ordre des headers est sensible ?


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 25-07-2004 à 10:47:39    

ouais essaies de jouer avec ca...:-/  

Reply

Marsh Posté le 25-07-2004 à 11:04:10    

bah j'ai essayé un peu, rien à faire.
 
bon bah tant pis


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Marsh Posté le 27-07-2004 à 09:20:06    

allez jme fais un petit up :o


---------------
http://chilax.com/forum/index.php?showforum=46 => !!!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed