Pages :
Salut,

Quand je change le CSS de mon site, il faut faire F5 (ou vider le cache) pour que ca prenne effet. Si je ferme puis rouvre mon browser, ca marche pas non plus. Il faut absolument rafraichir, donc beaucoup de mes visiteurs ne verront pas mes changements avant des semaines!

Comment remedier a ca ?
Modifié par apericube (12 Feb 2010 - 13:21)
Salut,

Il te suffit tout simplement de renommer le nom de ta feuille de style et d'en corriger le lien dans tes pages html. Le nom étant différent, elle sera automatiquement téléchargée, même si l'ancienne reste en cache. Smiley cligne
Hello,

j'étais en train d'écrire la même chose donc pour ne pas être trop frustré ( Smiley langue ) je rajoute que le plus simple est de rajouter la date de mise à jour : styles200100206.css
<FilesMatch ".(css)$">
Header set Cache-Control "max-age=0"
</FilesMatch>

Ajoute ça dans ton .htaccess, le css ne se mettra plus en cache Smiley smile
Technologix a écrit :
Ajoute ça dans ton .htaccess, le css ne se mettra plus en cache Smiley smile


Dans ce cas, autant mettre les styles CSS direct dans le fichier HTML...

Le cache c'est utile ! Smiley rolleyes
Salut,

Laurie-Anne a écrit :
Dans ce cas, autant mettre les styles CSS direct dans le fichier HTML... Smiley rolleyes
Ben ça permet quand même de n'avoir qu'une feuille de style externe pour toutes les pages. Smiley cligne

Cela dit je préfère la première méthode qui permet la mise en cache de la css en cours.
L'intérêt de la feuille de style, c'est justement de ne pas en télécharger les infos à chaque page ni à chaque visite. Donc ne pas la mettre en cache c'est loin d'une bonne idée, qui ne va en plus pas à l'économie de bande passante, et qui ralentit le chargement de toutes les pages pour le visiteur...
S'il s'agit juste de faire passer une mise à jour majeur auprès de tous les visiteurs, le fait de renommer le fichier est amplement suffisant et en rien pénalisant.
Ok merci. Mais pourquoi les browsers ne vérifient pas la taille ou la date de modif des fichiers avant d'utiliser leur cache ? C'est un peu naze non ?
Modifié par apericube (07 Feb 2010 - 12:32)
Salut,

A vrai dire, à part en période de production/mise à jour des styles, il n'est pas nécessaire de faire cette vérification systématiquement, cela utiliserait des ressources serveur inutilement et ralentirait l'affichage des sites en général. Smiley cligne
Une autre solution qui fonctionne avec les intégration Flash par exemple, consiste à ajouter un paramètre GET à l'url.
<link rel="stylesheet" href="http://www.monsite.com/style.css?v=1" type="text/css" />
apericube a écrit :
Ok merci. Mais pourquoi les browsers ne vérifient pas la taille ou la date de modif des fichiers avant d'utiliser leur cache ?

Ils peuvent parfaitement le faire. Par contre ça fait une requête HTTP conditionnelle (le navigateur envoie "hé, j'ai ce fichier qui date du 15 décembre, est-ce que tu as une version plus récente?", et le serveur répond "oui, la voila" ou "non, c'est bon"). Donc ça crée une latence quand même.

apericube a écrit :
C'est un peu naze non ?

Dit le mec qui ne sait pas configurer les en-têtes HTTP envoyés par le serveur pour une gestion optimale du cache. Smiley cligne

RTFM du jour: http://www.mnot.net/cache_docs/index.fr.html
Modifié par Florent V. (08 Feb 2010 - 04:55)
Heyoan a écrit :
@moust > oui mais ça revient à forcer la non-mise en cache de la css. Smiley cligne

Non. Sauf si le serveur est configuré pour ne pas demander de mise en cache pour les requêtes avec des paramètres GET, mais je ne crois pas que ça soit une configuration courante.

+1 pour la solution de moust (une solution classique en la matière), qui n'oblige pas à renommer les fichiers.
Florent V. a écrit :
Non. Sauf si le serveur est configuré pour ne pas demander de mise en cache pour les requêtes avec des paramètres GET, mais je ne crois pas que ça soit une configuration courante.
Tu es sûr ? J'avais justement arrêté d'utiliser cette méthode après avoir lu un article qui précisait le problème de non mise en cache. Smiley murf

En lisant le chapitre "Que peut-on mettre en cache ?" (alinéa 6) de ce guide c'est aussi ce que je comprends (mais je suis pas certain de bien comprendre).
moust > le simple fait de rajouter un parametre GET force le navigateur a ne pas utiliser son cache, ou faut-il aussi "vraiment faire quelquechose" avec ce parametre GET dans euh .. la feuille de style ? o_O

Je veux dire, je rajoute ce truc a la fin de mon <link> et ca neutralise le cache, point barre ?
Vive l'auto paquetage des js/css + mise en cache et versionement en 1 seul fichier ...

Regarde du coté de minify, entre autre.
Le paramètre get ajouté à l'url empêche la mise en cache que si il change. si tu laisses tout le temps la même valeur ton fichier sera bien mis en cache.

mon_fichier.ext?version=1 -> le fichier est lu depuis le cache tant que la valeur de version est 1

mon_fichier.ext?version=2 -> le fichier est rechargé

etc...
Modifié par jb_gfx (11 Feb 2010 - 12:01)
Tres bien ca comme solution, mais faut-il forcement utiliser une adresse absolue comme dans l'exemple de moust ou pas ? (j'imagine que non mais bon, pourquoi utiliser une adresse absolue d'abord o_O)

Benjamin : merci aussi pour l'indication de minify qui a l'air bien utile (suis en train de voir comment l'utiliser)
Modifié par apericube (11 Feb 2010 - 16:39)
Je me joins à vous pour un problème similaire. Je conaissais déjà la technique du style.css?v=1.

Je cherche maintenant à forcer la réactualisation du favicon qui est assez coriace puis qu'il faut vider le cache. J'ai fait un topic :

http://forum.alsacreations.com/topic-1-46732-1-Forcer-la-mise-a-jour-dun-favicon.html

On m'a envoyé ici...

J'ai testé la solution favicon.ico?v=1 : echec. Renommer le fichier : echec. Solution ci-dessous :

Technologix a écrit :
<FilesMatch ".(css)$">
Header set Cache-Control "max-age=0"
</FilesMatch>

Ajoute ça dans ton .htaccess, le css ne se mettra plus en cache Smiley smile


Echec : internal server error. Mon serveur doit être configuré pour ne pas accepter cette instruction.

D'où ma question : y'a-t-il d'autres moyens pour forcer la réactualisation du favicon ?

Merci
Pages :