28220 sujets

CSS et mise en forme, CSS3

Modification du post qui suit :
mon objectif était de faire en sorte qu'une fois la css chargée, le browser n'émette plus de requête HTTP sachant que dans mon cas, le client récupère de façon systématique un code retour 304 du serveur et que ce traffic réseau inutile est très pénalisant dans mon contexte.
Dans un premier temps, j'avais pensé à une bidouille avec un frameset (j'avoue que c'est tordu mais bon, je suis malade cette semaine...) mais la bonne stratégie est, comme l'a suggéré Laurent Denis, d'influer sur les directives de gestion de cache au niveau du HTTP header.
exemple : Cache-Control : max-age=xxx

-----------------------------------------------------------------------

bonjour à tous,

je voulais savoir s'il était possible de faire en sorte que les styles définis dans une feuille de style externe associée à une page qui contient un frameset soient appliqués aux pages qui composent le frameset ?

exemple de code qui ne fonctionne pas :

<html>
<link href="css/style.css" type="text/css" rel="stylesheet" >
<frameset>
<frame src='contenu.html'/>
</frameset>
</html>

<!-- contenu.html -->
<html>
<body>
<span class="un_style_de_la_css_externe">blabla</span>
</body>
</html>

Modifié par loobiecore (05 Sep 2005 - 14:53)
La page inclus dans un frameset est une vraie page html (contrairement à un include php) donc il faut que tu définisses dans le <head> l'appel au fichier CSS, tout simplement...
Bonjour,

je ne sais pas si c'est la meilleure fàçon de le faire, mais personnellement, j'avais indiqué le lien vers la feuille de style dans chacune des pages qui composent la frame.

RedOx
Cette solution ne me convient pas car mon objectif, c'est faire en sorte que lorsque je raffraichis ma page de contenu, le protocole HTTP n'envoie pas une requête pour la feuille de style sachant que le serveur me répondra à tous les coups un code 304 lors d'une session de travail d'un utilisateur.

dans le cadre de mon projet, j'ai une grosse contrainte sur les flux réseau et si j'arrive à économiser toutes les requêtes HTTP pour lesquelles je sais pertinemment que le serveur répondra par un code 304, je serai gagnant.

pour info dans mon cas, le volume de données lié au protocole HTTP est en moyenne 10 fois plus gros que le contenu métier que j'envoie. (des fichiers xml compressé de 300 octects à comparer à des headers HTTP de 3000 octets...)
Pourtant je ne vois pas d'autres solutions...

Peut-être faire plusieurs fichiers CSS différents avec un petit avec les choses communes pour minimiser et d'autres avec les autres choses mais franchement je ne vois pas ce qu'il peut y avoir dans le frame pour justifier ce "autres choses"...

Le fichier dans la frame étant un fichier totalement indépendant du frameset, il ne peut pas "connaître" les définitions voulues par toi au niveau du fichier frameset...

Si il existe une solution :

1) je ne la connais pas et logiquement parlant ne la conçois même pas
2) elle ne doit pas utiliser de frames mais un autre mécanisme

Bon courage ou attends l'arrivée de ceux qui sauraient Smiley cligne

<edit>
PS: le cache contiendra le fichier CSS non? Il ne sera pas redemandé au serveur...
Modifié par Bob (MC Melun) (02 Sep 2005 - 11:44)
a écrit :
le cache contiendra le fichier CSS non? Il ne sera pas redemandé au serveur...

je te le confirme, si ce n'est que ce que je cherche à économiser, ce n'est pas le transfert du fichier CSS mais directement les flux HTTP entre le browser et le serveur pour lesquels je contrôle le fait que le code retour sera 304 (304 = ressource non modifiée, ce qui indique au browser qu'il peut utiliser la version du document en cache).

a écrit :
Pourtant je ne vois pas d'autres solutions.
2) elle ne doit pas utiliser de frames mais un autre mécanisme

je suis d'accord avec toi. j'ai pensé à cette bidouille avec le frameset mais il s'agit peut-être d'une impasse.

des pistes pour un autre mécanisme ?

en ce moment, je cherche des solutions côté javascript : sachant que l'on peut récupérer une référence sur la css du document parent, je cherche à l'associer dynamiquement à ma page de contenu mais je n'ai pas encore trouvé le morceau de code qui fonctionne...
loobiecore a écrit :
des pistes pour un autre mécanisme ?


Voir les mécanismes HTTP1.0 et HTTP1.1 de directives cache client. Il est tout à fait possible d'éviter toute requête du client.