Aller au contenu

Sujets conseillés

Posté

Bonjour,

J'aimerai savoir si il est possible de ne pas mettre le(s) fichier(s) css en cache dans le navigateur du client ? ou de reforcer à chaque affichage son chargement ?

Car je fais souvent des modifs dans le css et les habitués ont des problèmes d'affichage (sauf ceux qui vident leur cache ou qui actualise la page avec F5).

Merci d'avance

Nicolas

Posté

En fait, moi, je triche, je les laisse mettre en cache, mais quand je change quelque chose, que ce soit au css ou au js, je rajoute un paramètre :


<link rel="stylesheet" type="text/css" media="print" href="style.css?version=1" />

Posté

On peut imaginer ça dans un .htaccess, non?

ExpiresByType text/css "access plus 0 seconds"

Posté

Salut

Question bête en prenant le problème à l'envers : un fichier CSS n'est pas forcément fait pour évoluer en permanence, y'a bien un moment où les modifications sont terminées, non ? (je ne connais pas le contexte, tu me diras).

L'intérêt et la raison d'être des CSS c'est précisément que ça se met en cache, ainsi toute la partie habillage est dissociée du code proprement dit, et donc ça aide les pages à charger plus vite. Sans quoi, autant faire comme il y a 10 ans : du bgcolor et des images de fond dans des cellules de tableaux.

Du coup, j'ai tendance à dire qu'il y a peut-être un problème de conception à la base unsure.gif

Posté

Salut Dudu,

Tu as raison sur le fait de dire qu'au bout d'un moment un fichier css ne doit plus bouger. D'ailleurs dans l'absolu il ne devrait bouger que sur l'espace dédié au developpement pour être maj sur la prod une fois validé...

Mais mon cas est un peu particulier !

En effet en ce moment mon fichier css change souvent car je fais des tests sur l'apparence des espaces pubs et les retours que cela peut avoir (%clics / ventes). Ce n'est pas quelque chose qui peut être testé sur un espace de developpement car j'étudie le comportement des visiteurs (clics) suivant l'apparence des encarts publicitaires.

Comme mon fichier "bouge" souvent pendant cette période de test cela peut poser des problèmes d'affichages coté visiteur "à cause" du cache des navigateurs.

Je voudrai donc éviter cela le temps des tests. C'est pour cela que j'ai temporairement supprimé le cache sur les fichiers css.

Ensuite une fois que j'aurai choisi la solution d'affichage la plus performante je mettrai une valeur de cache à plusieurs jours (surement 1 mois) associée aux fichiers css.

PS : pour moi l'avantage d'un CSS ce n'est pas seulement un gain de rapidité de chargement des pages mais aussi une structure plus efficace et plus simple à maintenir ;-) sans compter le code html plus propre...

Posté (modifié)

La solution la plus adaptée est de changer l'url du fichier CSS à chaque modification, soit en ajoutant/modifiant un paramètre comme dit plus haut, soit en changeant le nom du fichier (en ajoutant dans le nom le checksum md5 du fichier, la date, ...), et de mettre un entête d'expiration éloigné dans le temps (+ 1 an). Cela permet de garder une gestion du cache indispensable (comment peut-on encore faire recharger un fichier CSS à chaque changement de page???), et pouvoir avertir le navigateur en cas de modifications pour qu'il télécharge une nouvelle version du fichier CSS.

Modifié par Bigb06
Posté

Tout dépend. S'il modifie régulièrement le fichier durant la phase de test, je pense que la solution du .htaccess est plus adaptée puisqu'il n'aura pas besoin de modifier un deuxième fichier (celui qui contiendra la ligne d'appel de la feuille de style). Mais c'est un peu plus lourd et un peu contre-nature, effectivement.

Posté

Bigb06 >> je le repete c'est une solution temporaire... ;-) A terme (bientot) je remettrai le cache sur les css et j'utiliserai la solution de Dadou pour les prochaines modifications importantes.

Posté

Hello

Mais mon cas est un peu particulier !

En effet en ce moment mon fichier css change souvent car je fais des tests sur l'apparence des espaces pubs et les retours que cela peut avoir (%clics / ventes). Ce n'est pas quelque chose qui peut être testé sur un espace de developpement car j'étudie le comportement des visiteurs (clics) suivant l'apparence des encarts publicitaires.

Comme mon fichier "bouge" souvent pendant cette période de test cela peut poser des problèmes d'affichages coté visiteur "à cause" du cache des navigateurs.

Je voudrai donc éviter cela le temps des tests. C'est pour cela que j'ai temporairement supprimé le cache sur les fichiers css.

Ok. Avec le contexte, c'est déjà un peu plus compréhensible (je me doutais bien que tu n'étais pas subitement devenu fou).

PS : pour moi l'avantage d'un CSS ce n'est pas seulement un gain de rapidité de chargement des pages mais aussi une structure plus efficace et plus simple à maintenir ;-) sans compter le code html plus propre...

Oui tu as raison, c'est un autre avantage des CSS.

Mais...

comment peut-on encore faire recharger un fichier CSS à chaque changement de page???

Voilà ! C'est là où je voulais en venir ! Cette phrase est frappée au coin du bon sens.

Le problème posé par la solution des en-têtes Apache est qu'à CHAQUE CHANGEMENT DE PAGE, tout le contenu du fichier .css est rechargé !

C'est une perte de temps côté visiteur, et un bond de bande passante inutile de ton côté (même si je crois savoir que ton serveur n'est pas complètement débordé, et que tu as encore un peu d'eau sous la quille biggrin.gif)

Que ce soit temporaire ou pas, on ne peut décemment pas obliger à recharger toutes les règles de style d'un site à chaque page visitée ! nonono.gif

Un bon compromis serait peut-être de séparer les fichiers .css et d'en créer un qui cible uniquement les encarts publicitaires. Celui-ci uniquement, durant la phase de test, serait "interdit" de mise en cache, sans pour autant que toutes tes règles de mise en page aient besoin d'être rechargées à chaque changement de page.

Posté

Le contenu est rechargé à chaque fois ... mais le fichier ne fait que 7Ko et c'est temporaire.

Sur le principe je suis d'accord et l'idée de séparé le fichier me plait bien.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...