JeuWeb - Crée ton jeu par navigateur
forcer le navigateur à ne pas utiliser le cache - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : forcer le navigateur à ne pas utiliser le cache (/showthread.php?tid=5554)

Pages : 1 2 3


forcer le navigateur à ne pas utiliser le cache - php_addict - 15-07-2011

Bonjour

Je me pose une question, quand vous modifié vos fichier css, js, images, etc...il est alors souhaitable que le navigateur n'utilise plus son système de cache sinon les modifications ne sont pas prises en compte...

je sais qu'avec certains meta tag html ou header HTTP il est possible d'indiquer aux navigateurs la durée du cache et sa date d'expiration mais il me semble que cela ne soit qu'à titre indicatif et qu'après tout les navigateurs n'en font qu'à leur tête...

je pensais à cette solution pour le cas de mes fichiers css et js:

mon fichier css est en realité un fichier .php (idem pour le js) qui génère mes feuilles de style avec un système de cache interne:


<link rel="stylesheet" type="text/css" href="style.css.php" />

est t il idiot de faire un truc dans le genre style.css.php?i=1f2319s en cas de modification de mes feuilles de style?

y-a-t'il une meilleur solution ?

bonne journée !



RE: forcer le navigateur à ne pas utiliser le cache - christouphe - 15-07-2011

ce n'est pas idiot, je l'utilise pour les captcha afin de recréer une image. Donc pourquoi pas pour un fichier JS ou CSS...


RE: forcer le navigateur à ne pas utiliser le cache - Bertrand - 15-07-2011

Il faut sans-doutes vérifier les en-têtes HTTP renvoyés dans ce cas : on a ceux d'un fichier php ou ceux d'un fichier css/js ? Ça me paraitrait logique qu'on soit sur la 1ère option (la durée de vie de la ressource serait donc nulle), qui ferait que ces fichiers seraient demandés à chaque chargement/rechargement de page (tu ne profiterais donc plus du cache du navigateur).

J'étais déjà tombé sur un article sur ce sujet il y a qqs jours, et j'en ai trouvé un autre qui dit la même chose. La solution préconisée est de versionner les fichiers. De cette manière ils ne sont vraiment rechargés que lors d'une modification, et on est sur qu'ils sont bien rechargés. Ça peut être cumulé avec une durée de vie réduite (autour de 24h), pour les modifs mineures qui ne pourrissent pas la présentation ou les interactions (pour lesquelles on peut se permettre d'attendre qqs heures avant une mise à jour).


RE: forcer le navigateur à ne pas utiliser le cache - php_addict - 15-07-2011

@Bertrand:

mon fichier style.css.php est un script php qui génère mon css et qui est mis en cache par les navigateur grâce à:

header ("content-type: text/css; charset: UTF-8");
header('Cache-Control: max-age=86400, must-revalidate');

en fait si je comprend bien, ma solution de faire style.css.php?i=45693 est en quelque sorte du "versioning" ? sauf que dans mon cas l'ancienne version du css n'est pas conservée (en dur)


RE: forcer le navigateur à ne pas utiliser le cache - Bertrand - 15-07-2011

Oui, ça m'a l'air équivalent.


RE: forcer le navigateur à ne pas utiliser le cache - Pinguin - 16-07-2011

tu n'a même pas besoin de faire une page PHP :

si tu met juste une URL de type style.css?i=123456, le navigateur ne l'a mettra pas en cache. Wink

En effet, le navigateur n'a aucun moyen de savoir si le code est du PHP, car l’extension est souvent trompeuse.

Ton CSS sera appelé comme d'habitude, tout ce qui est après le ? étant ignoré.

Il suffit juste de changer le numero dans tes URLs quand tu change le CSS.


RE: forcer le navigateur à ne pas utiliser le cache - Mysterarts - 17-07-2011

Marrant, je viens de faire cette recherche pour aider un pote !
Voilà un lien qui pourrait t'aider : http://blog.websourcing.fr/webdesign-forcer-la-mise-a-jour-des-fichiers-css-et-js-de-votre-site/


RE: forcer le navigateur à ne pas utiliser le cache - niahoo - 17-07-2011

Mouais, je vois pas pourquoi ils font pas un mix entre leurs deux solutions, à savoir mettre la date de dernière modif du fichier dans la query-string


RE: forcer le navigateur à ne pas utiliser le cache - php_addict - 17-07-2011

oui, et je suis pas très fan des url rewriting...


RE: forcer le navigateur à ne pas utiliser le cache - Argorate - 18-07-2011

si tu ne veux pas utiliser le cache tu met toto.css.php?t=time() et ça rechargera a coup sur a chaque coup...
j'utilise cette solution pour mon js et css et ça marche très bien Wink