Nicolas Posté 10 Janvier 2012 Posté 10 Janvier 2012 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
Dadou Posté 10 Janvier 2012 Posté 10 Janvier 2012 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" />
yuston Posté 10 Janvier 2012 Posté 10 Janvier 2012 On peut imaginer ça dans un .htaccess, non? ExpiresByType text/css "access plus 0 seconds"
Nicolas Posté 10 Janvier 2012 Auteur Posté 10 Janvier 2012 Merci pour vos réponses, Yuston >> je viens d'essayer apparement ca fonctionne ;-) merci
Dudu Posté 10 Janvier 2012 Posté 10 Janvier 2012 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
Nicolas Posté 10 Janvier 2012 Auteur Posté 10 Janvier 2012 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...
Bigb06 Posté 10 Janvier 2012 Posté 10 Janvier 2012 (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é 10 Janvier 2012 par Bigb06
yuston Posté 10 Janvier 2012 Posté 10 Janvier 2012 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.
Nicolas Posté 10 Janvier 2012 Auteur Posté 10 Janvier 2012 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.
Dudu Posté 11 Janvier 2012 Posté 11 Janvier 2012 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 ) 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 ! 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.
Nicolas Posté 11 Janvier 2012 Auteur Posté 11 Janvier 2012 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant