Feuilles css en cache ?

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Feuilles css en cache ?

Message le Mar Sep 26, 2006 13:35

Bonjour,

il me semble qu'une feuille de style externe (.css donc) n'est chargée qu'une fois par le navigateur client. Mais le problème, c'est que si'lon vient à laz modifier, le client ne verra pas les effets de cette nouvelle feuille, car son navigateur utilisera l'ancien.
Je me trompe ? Comment éviter de demander à l'internaute d'actualiser sa page ?


e-kiwi
Modérateur
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Sep 26, 2006 13:39

un moyen fiable à 100% est de la renommer (ie n'en fait qu'à sa tête)


sureau
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 192
Inscription: Lun Mar 07, 2005 15:25

Message le Mar Sep 26, 2006 13:51

Tu peux faire style d'en appeler une autre en lui passant ds paramètres inutiles :
<link rel="stylesheet" type="text/css" href="images/style.css" />
puis
<link rel="stylesheet" type="text/css" href="images/style.css?12345" />

sur mon validateur xhml j ai pas d'erreures :)


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mar Sep 26, 2006 14:08

Ca marche ça ??? Tu utilises une tolérance du navigateur, non ?


e-kiwi
Modérateur
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Sep 26, 2006 14:14

je fais ça pour mes elements type flash qui sont jamais mis à jour ^^ je rajoute le timestamp au nom du fichier. par contre pour un css, il serait rechargé à chaque page. rajoutes-y l'heure ou un truc du style
par contre je rajoute aps en parametre mais bien dans le nom du fichier (ré-ecrit en rewriting) je ne sais pas si la méthode de passer en parametre est fiable ou non


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mar Sep 26, 2006 14:23

Merci de vos précieux conseils, mais :
1- cela me parait bien compliqué, même rewrité. Tant qu'à renommer le fichier, autant appeler style1.css, puis style2.css pour la deuxième version, puis style3.css, etc, non ?

2- il n'existe pas d'instruction à donner au navigateur, genre balise meta ? ou une instruction php-unix style "lastmodified" ?


e-kiwi
Modérateur
Modérateur
 
Messages: 13848
Inscription: Mar Déc 23, 2003 9:04

Message le Mar Sep 26, 2006 15:33

moi ca me parait pas compliqué, t'appelles dans ton code osurce de la page style-<? echo timestamp() ?>.css
et dans ton htaccess :

rewrite style-(.+).css style.css :)

mais si tu veux changer son nom, oui aussi, ca permet d'alleger les hits de ton fichier


sureau
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 192
Inscription: Lun Mar 07, 2005 15:25

Message le Mar Sep 26, 2006 15:45

tu peux interdir le cache du navigateur, mais je suis pas sur que ca marche pour les css :

Code: Tout sélectionner
      $CachePlus = "";
      if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
      $now = gmdate('D, d M Y H:i:s') . ' GMT';
      header("Expires: $now");
      header("Last-Modified: $now");
      header("Cache-Control: no-cache, must-revalidate".$CachePlus);
      header("Pragma: no-cache");


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mar Sep 26, 2006 16:42

Donc, e-kiwi, le navigateur croit qu'il y a un nouveau fichier style à charger, il fait donc une requête au serveur, mais ce dernier lui renvoie quand même style.css (qui a été éventuellement mis à jour entre temps).
Avec cela, je suis sûr que le navigateur rechargera style.css à fois qu'une page est chargée (i.e. chaque fois que le timestamp change, i.e.à chaque seconde serveur), mais cela diminue notablement le temps de chargement des pages, non ?

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: Lun Juil 11, 2005 11:47

Message le Mar Sep 26, 2006 17:11

sureau a écrit:tu peux interdir le cache du navigateur, mais je suis pas sur que ca marche pour les css :

Code: Tout sélectionner
      $CachePlus = "";
      if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
      $now = gmdate('D, d M Y H:i:s') . ' GMT';
      header("Expires: $now");
      header("Last-Modified: $now");
      header("Cache-Control: no-cache, must-revalidate".$CachePlus);
      header("Pragma: no-cache");

tu m'avais déjà donné cela mais ça ne fonctionne pas!


guicara
WRInaute accro
WRInaute accro
 
Messages: 2297
Inscription: Jeu Fév 02, 2006 20:40

Message le Mar Sep 26, 2006 18:28

Hum... Sur sertaint forum utilisant des feuilles de syles (comme punbb), il y a des outils pour vider le cache, le client n'y vois que du feux, mais comment... ?


Pandore
WRInaute accro
WRInaute accro
 
Messages: 1427
Inscription: Ven Oct 14, 2005 22:38

Message le Mer Sep 27, 2006 17:39

Tu veux dire qu'il y aurait une commande qui permettrait au chargement d'une page web de déclencher une purge du cache sur le disque dur du visiteur ???


petitchevalroux
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 105
Inscription: Mer Mai 31, 2006 11:13

Re: Feuilles css en cache ?

Message le Lun Mar 02, 2009 22:42

je viens d'écrire un article qui montre comment combiner le header expire et un css à jour :
-http://postit.petitchevalroux.net/astuces-divers/faire-versioning-fichier-statique-astuces.198.html
, j'utilise la même technique que sureau avec le md5 du fichier css


Marie-Aude
WRInaute accro
WRInaute accro
 
Messages: 4921
Inscription: Lun Juin 05, 2006 14:15

Re: Feuilles css en cache ?

Message le Lun Mar 02, 2009 23:05

Ca c'est du déterrage de topic !!!


gusterman
WRInaute discret
WRInaute discret
 
Messages: 55
Inscription: Jeu Nov 13, 2008 20:47

Re: Feuilles css en cache ?

Message le Lun Mar 02, 2009 23:11

Pour ma part, j'appelle mon CSS de la sorte :
main.css?v=<?=@filemtime('main.css')?>

filemtime() retourne la date de dernière modification du fichier (format unixtime), donc dès que le css est modifié, il retourne une série de chiffre différent, rechargeant le CSS.

http://fr3.php.net/manual/fr/function.filemtime.php

Feuilles css en cache ?

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités