Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2006, 13h56   #1
Invité de passage
 
Inscription : février 2004
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 26
Points : 2
Points : 2
Par défaut [Image]comment bloquer le cache sur les images?

bonjour

j'ai une page d'upload d'image
lorsque j'upload les images le script copy les image dans un repertoir en
renoment les images 1.jpg,2.jpg,3.jpg..
et ensuite les affiche dans la meme page
la j ai le choix d effacer les image
lorsque j efface une image le script renome toute les images
exemple:
si j efface l'image 2.jpg le script renome 3.jpg en 2.jpg
le probleme c est que les images restent dans le cache du navigateur
et c est l'ancienne image 2.jpg qui est afficher tant que je ne fait pas <ctrl> + F5


pourtant en debut de page j'ai desacliver la mise en cache

Code :
1
2
3
4
5
 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
 header("Cache-Control: no-store, no-cache, must-revalidate"); 
 header("Cache-Control: post-check=0, pre-check=0", false); 
 header("Pragma: no-cache");
pouvez vous m'aider???
keiser1080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h00   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Tu pourrais (attention, solution violente) utiliser la méthode du paramètre aléatoire. Ajoute "?" et une chaîne aléatoire au nom de fichier image, tu seras assuré que tous tes utilisateurs téléchargeront l'image à chaque fois.
Inconvénient : tu gaspilles une montagne de bande passante...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h09   #3
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Citation:
pourtant en debut de page j'ai desacliver la mise en cache
Les entêtes HTTP sont valables par fichier, pas par page. Ainsi les entêtes que tu envois depuis ta page ne concerneront absolument pas tes images.

Une solution, très similaire à celle de Kirkis mais pas "barbare" et qui permettra quand même l'utilisation du cache du navigateur : ajouter la date de dernière modification de l'image dans l'URL.
Cela pourrait donner :
Code :
1
2
3
<?php
$image = 'monimage1.jpg';
echo '<img src="', $image, '?', filemtime( $image ), '" />';
Ceci combiné à l'envoi d'entêtes expires assez longs (une semaine par exemple), devrait te fournir un excellent cache, très efficace sans pour autant poser le genre de soucis que tu as actuellement.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h36   #4
Invité de passage
 
Inscription : février 2004
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 26
Points : 2
Points : 2
merci pour ta reponse

je peux pas utiliser cette methode car le nom des image et baser sur un enregistrement dans ma base de donner

en gros c'est une interface utillisateur
en cliquant sur la fiche de l'utillisateur on peux uploder des photos
qui seront lier à sont id

en pratique lorsuqe je clique sur l'id 1
je envois vers ma page d'upload le parametre 1 en get

lorsque je rajoute une photo
un repertoir et un sourepertoir "1" est creer

le repertoire "1" contient le sous repertoir "1" et les photos uploder
les photos uploader sont numeroter 1.jpg,2.jpg,3.jpg,...
dans le sous repertoir "1" je cree les miniatures 1.jpg,2.jpg,3.jpg,...

tout marche à la perfection sauf au moment ou je fait un delette d'une photo les photos sont renomer et la si je fait pas un delette manuel de la cache l anciennne photo est afficher.

y a t il une erreur dans mon code?
Code :
1
2
3
4
5
6
 
 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
 header("Cache-Control: no-store, no-cache, must-revalidate"); 
 header("Cache-Control: post-check=0, pre-check=0", false); 
 header("Pragma: no-cache");
ou es ce que les browseur garde d'office les images en cache???[/code]
keiser1080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h55   #5
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Il dit qu'il voit pas le rapport...

ce n'est pas parce que le nom est stocké en base de données que tu ne peux pas modifier le tag HTML... <img src="1/1/2.jpg?123456464564" /> ça marche très bien...


Et pour tes entêtes, je t'ai déjà répondu : tu les envois vraissemblablement de ta page HTML, qui n'a absolument rien à voir.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 15h36   #6
Invité de passage
 
Inscription : février 2004
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 26
Points : 2
Points : 2
merci pour vos reponse
je test et je vous dis ce que ca vas donner
keiser1080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 18h17   #7
Invité de passage
 
Inscription : février 2004
Messages : 26
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par Kioob
Il dit qu'il voit pas le rapport...

ce n'est pas parce que le nom est stocké en base de données que tu ne peux pas modifier le tag HTML... <img src="1/1/2.jpg?123456464564" /> ça marche très bien...


Et pour tes entêtes, je t'ai déjà répondu : tu les envois vraissemblablement de ta page HTML, qui n'a absolument rien à voir.
merci kioob

j' ai compris ta methode est grace à toi j'ai reussi à le faire

mais j'ai du modifier un peu en faite dans mon cas j'uppload jusqu'à 10 images en meme temps donc les dix fichier on la meme dates

ces fichier (photo) sont afficher juste dans l'interface admin et ne font que quelque byte
donc j'ai modifier

Code :
1
2
3
<?php 
$image = 'monimage1.jpg'; 
echo '<img src="', $image, '?', filemtime( $image ), '" />';
en
Code :
1
2
3
4
 
<?php 
$image = 'monimage1.jpg'; 
echo '<img src="', $image, '?', echo md5(time()),'" />';
et la ca marche sans probleme
merci pour l'aide
keiser1080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h17.


 
 
 
 
Partenaires

Hébergement Web