Feuilles css en cache ?

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


xdeslandes
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 391
Inscription: 29 Déc 2004

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: 15542
Inscription: 23 Déc 2003

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 discret
WRInaute discret
 
Messages: 195
Inscription: 7 Mar 2005

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 occasionnel
WRInaute occasionnel
 
Messages: 391
Inscription: 29 Déc 2004

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: 15542
Inscription: 23 Déc 2003

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 occasionnel
WRInaute occasionnel
 
Messages: 391
Inscription: 29 Déc 2004

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: 15542
Inscription: 23 Déc 2003

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 discret
WRInaute discret
 
Messages: 195
Inscription: 7 Mar 2005

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 occasionnel
WRInaute occasionnel
 
Messages: 391
Inscription: 29 Déc 2004

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: 11 Juil 2005

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 passionné
WRInaute passionné
 
Messages: 2462
Inscription: 2 Fév 2006

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 passionné
WRInaute passionné
 
Messages: 1441
Inscription: 14 Oct 2005

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 discret
WRInaute discret
 
Messages: 190
Inscription: 31 Mai 2006

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
Modérateur
Modérateur
 
Messages: 11173
Inscription: 5 Juin 2006

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: 13 Nov 2008

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 ?

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

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 les experts Google Analytics de Ranking Metrics.

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