28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Je suis un peu surpris de n'avoir trouvé réponse à ma question ni par google, ni sur des sites spécialisés (alsacréations, openweb...) ! N'ai-je pas su les voir ? J'ai trouvé pas mal de choses qui tournent autour du pot, mais pas de solution...

Mon problème est pourtant simple : un site avec les CSS dans un fichier, et je voudrais qu'en cas de mise à jour du fichier CSS (changement de thème graphique par exemple) il soit relu automatiquement (sans manip de l'internaute qui ne sait évidemment pas qu'il y a eu mise à jour !). Sauf paramétrage particulier du navigateur, il reste en cache et la nouvelle version n'est pas prise en compte... Et ceci même si la page html a été modifiée, ou si c'est une page générée par PHP...

Il doit pourtant bien y avoir une solution simple ?
Ah ? Moi je n'ai pas vraiment ce genre de problèmes. Quand le fichier CSS a été modifié, il est rechargé, et voilà.

Tu ne travailles pas dans un environnement spécial (configuration du navigateur, proxy, serveur ou CMS avec un système de cache un peu violent…) ?
Merci pour ta réponse ! Je m'en doutais un peu, et je n'aurais pas dû hésiter à le mentionner :

En fait, je me demande si le problème ne vient pas (mais comment ?) du fait que le nom de domaine est redirigé ( par Relais Internet) par un système de frames invisibles vers un hébergement free.fr.

J'ai constaté le problème de prise en compte des mises à jour CSS en trois lieux différents, sur des machines différentes, avec accès par des FAI différents. Dans deux cas (pas essayé cela sur la 3° bécane), tout rentre dans l'ordre lorsqu'on accède par l'url de l'hébergeur (monsite.free.fr), y compris lorsqu'ensuite on accède par le nom de domaine (monsite.fr).

Hormis virer cet affreux système de redirection (en plus déplorable pour un référencement correct Smiley rolleyes ), y a-t-il une solution ? Si oui, elle m'intéresse tant du point de vue technique (pour satisfaire ma curiosité Smiley cligne ) que comme solution d'attente d'un nouvel hébergeur et personnalisation des DNS...
Modifié par jibe74 (13 Jun 2006 - 19:11)
Modérateur
Bonjour,

Nous avons le même problème. Je trouve aussi étrange que le navigateur ne vérifie pas la date de modification du fichier CSS. Pour ce qui est de la configuration du serveur IIS, c'est les paramètres par défault au niveau de la cache.

Dans l'un de nos sites hébergés chez-nous, dans la configuration du site, onglet HTTP Headers, il y a une case à cocher Enable content expiration. Voici les choix possibles si cette option est activée :

IIS a écrit :

Enable content expiration

Select the Enable content expiration check box to include expiration information for time-sensitive material, such as special offers or event announcements. The browser compares the current date to the expiration date to determine whether to display a cached page, or to request an updated page from the server.

Expire immediately
Click this option and content expires immediately after it is served. This setting forces the browser to always retrieve the content fresh from the server on subsequent requests.

Expire after
Set a specific period of time after which the browser is forced to retrieve the content again from the server on the subsequent requests.

Expire on
Select to set a specific date and time after which the browser is forced to retrieve the content again from the server on the subsequent requests.


De ce que j'ai compris, c'est ce qui permet au serveur d'indiquer au navigateur web client quand ce dernier doit renouveller ses fichiers en cache (à chaque chargement, après un certain temps, à une date précise). Je croyais pourtant que le navigateur, par défault, comparait toujours les dates de modification des fichiers en cache versus ceux sur le serveur. J'étais convaincu de tout ca jusqu'à ces derniers jours.

Pour régler le problème, temporairement, lorsque je modifie un fichier CSS, je change également son nom pour m'assurer qu'il soit téléchargé par les visiteurs.

Je vais poursuivre mes investigations plus tard à ce sujet, car c'est vraiment désagréable de toujours changer les noms.
Modifié par Tony Monast (14 Jun 2006 - 19:20)
Sous free, tu peux utiliser PHP.
Donc, utiliser les headers.
Donc, dans ton fichier CSS,tu vas refuser la mise en cache :
<?
//RIEN AVANT LE <? !!!
header("Cache-Control: no-cache, must-revalidate"); // Rien dans le cache
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date du passé, déjà expirée
?>
Ton code


Ps : regarde un peu http://fr.php.net/header de temps en temps Smiley langue
Modifié par Ent De Kryte (14 Jun 2006 - 20:06)
Bonjour,

@Tony Monast : Oui, même problème, mais pas le même serveur (IIS pour toi, Apache en ce qui me concerne). Mais je ne pense pas qu'il faille regarder côté serveur : pour ma part, l'hébergeur est Free.fr, impossible donc d'intervenir sur Apache. Par ailleurs, comme j'explique plus haut, le problème n'a pas l'air lié au serveur, puisque quand je ne passe pas par la redirection, le problème disparait. En tous cas, tenons-nous au courant !

Ent De Kryte a écrit :
Ps : regarde un peu http://fr.php.net/header de temps en temps Smiley langue

Smiley biggrin Tu as parfaitement raison. Mais si je pensais toujours à tout, je n'aurais pas besoin du forum Smiley cligne
Ceci dit, ce que tu proposes peut être une solution d'attente (donc intéressante pour moi avant de virer cette horrible redirection par frames), mais si j'ai bien compris cela forcerait la réactualisation à chaque fois ? L'effet est donc équivallent à
<META http-equiv="Pragma" CONTENT="no-cache">

Or, je ne cherche pas à empêcher la mise en cache systématiquement, mais seulement à faire en sorte que le ficher CSS soit bien rechargé lorsqu'il a été modifié.