PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Cache navigateur en PHP.... Grrrrrrrrrr
Cache navigateur en PHP.... Grrrrrrrrrr
Débuté par JULIEN, 02 mar. 2016 19:03 - 20 réponses
Membre enregistré
197 messages
Popularité : +3 (3 votes)
Posté le 02 mars 2016 - 19:03
Bonjour à tous,

Malgré toutes mes recherches, je n'ai pas trouvé de cas totalement similaire à mon problème c'est pourquoi je me permets d'exposer mon problème...

Dans un site PHP, j'ai un site pour un client avec un back-office dans lequel il peut changer ses photos, le souci c'est que sans vider le cache du navigateur...les anciennes photos restent.

Ma première idée : utiliser une page sans contexte : pas possible avec une image générée depuis un chemin...

Deuxième idée (provenant de ce forum) : passer un paramètre heure dans le nom de l'image : pas possible, car j'ai besoin que le nom reste le même.
Chaque photo (image générée depuis un chemin) possède un libellé/nom fixe donc je ne souhaite pas lui donner un nom différent avec un paramètre qui permettrait de "forcer" le navigateur à rafraichir l'image, mais cela me posera des problèmes lors de l'initialisation de la page et du chargement des différents éléments.

Là j'avoue être dans l'impasse, car je ne trouve aucune commande du Langage qui me permette de forcer à vider le cache ou de forcer les images à se rafraichir...avec une page avec contexte.

J'ai bien lu un problème semblable qui parle d'utiliser Finprogramme mais sans fournir plus de détails, et je ne parviens pas à utiliser correctement cette fonction, car dans mes tests, cela bloque complètement le chargement de la page...

En espérant qu'une fois de plus, quelqu'un aura une solution à me soumettre.

Merci par avance et bonne soirée,

Julien
Membre enregistré
141 messages
Popularité : +0 (2 votes)
Posté le 03 mars 2016 - 19:16
Bonjour,

A ce niveau c'est bien le navigateur qui utilise son cache.

Si le type de ton image est dynamique ou généré tu ne devrais pas avoir le problème en WebDev PHP.
Il y a forcément un timestamp en fin de l'image pour éviter le problème de cache.

Sinon tu peux aussi chercher du côté des entêtes HTTP (ex : http://lorempixel.com/400/200/sports/ c'est toujours la même URL mais à chaque F5 tu as une nouvelle image car les entêtes indiquent Cache-Control:no-cache Pragma:no-cache)

--
bon dev'
Membre enregistré
197 messages
Popularité : +3 (3 votes)
Posté le 03 mars 2016 - 19:26
Bonsoir Guillaume,

Tout d'abord je te remercie pour ton aide.

Je te confirme que les champs images sont bien de type généré, et que le site est en PHP, pourtant je subis ce problème et si j'en crois le nombre de personnes dans mon cas, cela pose souci à beaucoup de monde...

A propose de timestamp...je ne vois aucune fonction de ce genre dans le code html de la page :(

Concernant les entêtes http j'avoue n'avoir jamais utilisé cela, cela consiste-t-il à passer un paramètre dans l'url de la page? (une heure+date par exemple?

As-tu un exemple à me donner stp?

Au niveau du référencement cela n'a pas d'incidence?

Merci pour ton aide précieuse.

Bonne soirée,
Membre enregistré
218 messages
Popularité : +8 (8 votes)
Posté le 04 mars 2016 - 10:27
Bonjour,

Si tu ne peux pas utiliser la méthode que j'appelle "killcache", essaie donc d'adapter celle indiquée à cette adresse :
http://www.apprendre-php.com/portions-de-script/script-4-empcher-la-mise-en-cache-dans-le-navigateur.html

Mais tu devras quand-même, la toute première fois, vider ton cache : la page étant déjà mémorisée dans le cache, la modification ne serait pas prise en compte.
Membre enregistré
141 messages
Popularité : +0 (2 votes)
Posté le 10 juin 2016 - 19:13
Bonjour,

Tu peux indiquer le chemin réellement présent dans l'image lorsque tu l'inspectes dans le navigateur stp?
Là où il y a le <img src="

Cela peut donner une piste.
Après si ton projet est assez autonome, je peux jeter un oeil directement dessus à l'occasion.

--
bon dev'
Membre enregistré
41 messages
Popularité : +4 (4 votes)
Posté le 19 septembre 2017 - 15:40
Bonjour
J'ai le même problème en WB21 PHP en ce moment, si vous avez trouvé la solution, merci de transmettre

--
Hamza ZEROUALA
www.privilegeway.com/plateforme…
Posté le 19 septembre 2017 - 19:26
Le 02/03/2016, JULIEN a supposé :
Bonjour à tous,

Malgré toutes mes recherches, je n'ai pas trouvé de cas totalement similaire
à mon problème c'est pourquoi je me permets d'exposer mon problème...

Dans un site PHP, j'ai un site pour un client avec un back-office dans lequel
il peut changer ses photos, le souci c'est que sans vider le cache du
navigateur...les anciennes photos restent.

Ma première idée : utiliser une page sans contexte : pas possible avec une
image générée depuis un chemin...

Deuxième idée (provenant de ce forum) : passer un paramètre heure dans le nom
de l'image : pas possible, car j'ai besoin que le nom reste le même.
Chaque photo (image générée depuis un chemin) possède un libellé/nom fixe
donc je ne souhaite pas lui donner un nom différent avec un paramètre qui
permettrait de "forcer" le navigateur à rafraichir l'image, mais cela me
posera des problèmes lors de l'initialisation de la page et du chargement des
différents éléments.

Là j'avoue être dans l'impasse, car je ne trouve aucune commande du Langage
qui me permette de forcer à vider le cache ou de forcer les images à se
rafraichir...avec une page avec contexte.

J'ai bien lu un problème semblable qui parle d'utiliser Finprogramme mais
sans fournir plus de détails, et je ne parviens pas à utiliser correctement
cette fonction, car dans mes tests, cela bloque complètement le chargement de
la page...

En espérant qu'une fois de plus, quelqu'un aura une solution à me soumettre.

Merci par avance et bonne soirée,

Julien


peut-être de donner une piste ...

pour afficher des pdf et éviter les pb de cache, voilà comment nous
adressons nos url

http://www.monsite.com/UserFiles/file/BOITE_OUTILS_FR/CLUB_nn/concours-123.pdf…

ce sont des menus paramètrés, et on met une variable [%HEURE%] derrière
l'adresse et par prog on remplace

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Posté le 21 septembre 2017 - 09:43
Le 02/03/2016, JULIEN a supposé :
Bonjour à tous,

Malgré toutes mes recherches, je n'ai pas trouvé de cas totalement similaire
à mon problème c'est pourquoi je me permets d'exposer mon problème...

Dans un site PHP, j'ai un site pour un client avec un back-office dans lequel
il peut changer ses photos, le souci c'est que sans vider le cache du
navigateur...les anciennes photos restent.

Ma première idée : utiliser une page sans contexte : pas possible avec une
image générée depuis un chemin...

Deuxième idée (provenant de ce forum) : passer un paramètre heure dans le nom
de l'image : pas possible, car j'ai besoin que le nom reste le même.
Chaque photo (image générée depuis un chemin) possède un libellé/nom fixe
donc je ne souhaite pas lui donner un nom différent avec un paramètre qui
permettrait de "forcer" le navigateur à rafraichir l'image, mais cela me
posera des problèmes lors de l'initialisation de la page et du chargement des
différents éléments.

Là j'avoue être dans l'impasse, car je ne trouve aucune commande du Langage
qui me permette de forcer à vider le cache ou de forcer les images à se
rafraichir...avec une page avec contexte.

J'ai bien lu un problème semblable qui parle d'utiliser Finprogramme mais
sans fournir plus de détails, et je ne parviens pas à utiliser correctement
cette fonction, car dans mes tests, cela bloque complètement le chargement de
la page...

En espérant qu'une fois de plus, quelqu'un aura une solution à me soumettre.

Merci par avance et bonne soirée,

Julien


peut-être de donner une piste ...

pour afficher des pdf et éviter les pb de cache, voilà comment nous
adressons nos url

http://www.monsite.com/UserFiles/file/BOITE_OUTILS_FR/CLUB_nn/concours-123.pdf…

ce sont des menus paramètrés, et on met une variable [%HEURE%] derrière
l'adresse et par prog on remplace

---
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Membre enregistré
127 messages
Popularité : +4 (6 votes)
Posté le 02 novembre 2017 - 18:32
Je débute à programmer avec Webdev php.

Les pages avec contexte qui ne s'affiche plus au rafraîchissement..

j'ai trouvé la solution pour moi, dans l'initialisation de session PHP de votre projet, faut au moins déclarer une variable globale même si elle n'est pas utilisée.

De cette façon les pages avec contexte ne réagissent pas de la même façon.

Voilà.
Membre enregistré
41 messages
Popularité : +4 (4 votes)
Posté le 03 novembre 2017 - 10:55
Bonjour Zack et merci de votre réponse.
J'ai plien de variables globales déclarée dans ma session PHP (Initialisation du projet) mais le probleme persiste.
Je vais vous expliquer mieux ce qui se passe:
J'ai crée un backoffice pour que l'utilisateur puisse mettre à jours des données (par exemple ajouter des données a une table)
Il fait la saisie, l'info est bien enregistrée (quand on va dans phpmyadmin pour verifier)
il reviens a la table generale qui affiche tous les enregistrements (bien que celle ci soit liée directement au fichier (a la table) pas de requete )
l'affichage est pareil, le nouvel enregistrement n'apparait pas
L'utilisateur se déconnecte (PHPSESSION="")
il se reconnecte
il affiche la table, et le nouvel enregistrement s'affiche

Ce qui dérange c'est le faite d'être obligé de se déconnecter pour voir les nouveaux enregistrement affichés.

Merci

--
Hamza ZEROUALA
Membre enregistré
141 messages
Popularité : +0 (2 votes)
Posté le 06 novembre 2017 - 14:48
"il reviens a la table generale"

Comment y revient il ?
Il faut utiliser PageAffiche() pour aller à la page afin de mettre à jour le contexte de cette page.
Pas de lien direct (href).

--
bon dev'
Membre enregistré
41 messages
Popularité : +4 (4 votes)
Posté le 07 novembre 2017 - 00:06
Oui il reviens a la table avec un PageAffiche justement, le code de réinitilisation de la requete est dans l'initialisation de la page avec un ZoneRepeteeAffiche, mais les données ne sont pas mis à jours.

--
Hamza ZEROUALA
Membre enregistré
474 messages
Popularité : +17 (19 votes)
Posté le 01 janvier 2018 - 17:46
Bonjour,

Je me retrouve dans le même cas de figure pour un site PHP.
Lors de la saisie de formulaires, cela fonctionne pour la 1ere fiche en saisie ou modification.
Pour la 2nd, les zones de saisie récupèrent les infos du cache.

Seule solution, pour le moment, c'est de fermer le navigateur et de l'ouvrir à nouveau.
C'est vraiment galère !!!

J'ai parcouru toutes les idées trouvées sur le net et sur le forum :
* Pageutilise() pour supprimer le contexte
* intégrer un valeur avec la fonction maintenant() pour modifier l'URL à chaque nouvelle modif ou création de formulaire
* etc...
Rien ne fonctionne

Si quelqu'un a trouvé LA solution, merci !!! :)

--
Jean-Michel
Message modifié, 01 janvier 2018 - 17:58
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 03 janvier 2018 - 07:33
Bonjour,

Dans la doc php on trouve ceci: http://php.net/manual/fr/function.header.php
ou encore ceci pour le cache-control: https://fr.wikipedia.org/wiki/Cache-Control…

Après n'étant pas spécialiste web je ne saurais dire si ça fonctionne correctement.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
474 messages
Popularité : +17 (19 votes)
Posté le 05 janvier 2018 - 10:45
Bonjour Philippe,

Merci pour tes liens.
Quand je regarde le code généré pour la page, je lis :

<meta http-equiv="cache-control" content="no-cache, no-store, must-rdate"><meta http-equiv="expires" content="0">

Donc à priori, le pb ne viendrait pas du cache.
Mais alors pourquoi le fait que fermer le navigateur et de l'ouvrir à nouveau règle le pb ?

Au niveau des programmes, cela fonctionnait très bien avec Webdev 20. C'est le passage à la V22 qui provoque ce pb.
J'ai ouvert un ticket au ST mais comme d'habitude, ce pb n'est pas connu de leur service et il faut envoyer un projet pour mettre en évidence le pb.

Je vais tester avec les sites PHP d'exemple fournis avec Webdev pour vérifier s'il y a bien le même pb.

--
Jean-Michel
Posté le 10 mai 2018 - 02:33
J'ai le même problème avec la version WB23 et je n'ai pas de solution pour le moment...
Avez-vous un code PHP ou autres solutions pour résoudre le problème ?
Merci
Posté le 10 mai 2018 - 02:36
Avez-vous trouver une solution ?
Merci
Membre enregistré
141 messages
Popularité : +0 (2 votes)
Posté le 11 mai 2018 - 09:30
Bonjour,
ZRAffiche est appelée avec taRéExécuteRequête ?

--
bon dev'
Membre enregistré
474 messages
Popularité : +17 (19 votes)
Posté le 11 mai 2018 - 15:32
Philippe 75 a écrit :
J'ai le même problème avec la version WB23 et je n'ai pas de solution pour le moment...
Avez-vous un code PHP ou autres solutions pour résoudre le problème ?
Merci


Non pas de solution pratique. Je ferme le navigateur après chaque saisie en attendant d'avoir une solution.

--
Jean-Michel
Posté le 01 juin 2018 - 20:00
J'ai le même problème en version 23 et toujours pas de solution.
Quelqu’un a t-il résolu ?
Posté le 12 juin 2018 - 23:19
Je me répond à moi moi même.
Zack à raison. J'avais des variables globales aux projet mais sans la déclaration "GLOBAL" et maintenant ça fonctionne !
Pas vraiment d'explication.

Philippe