Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2012-05-17 05:48:00

fix
Membre
Inscription : 2005-01-20
Site Web

Un fichier public et une CSS par page ?

Bonjour,

La CSS et le fichier _public.php de mon thème deviennent de plus en plus gros : 22ko pour ma CSS... et 25ko pour le fichier _public.php ! (Je précise que j'utilise DÉJÀ le plugin CompreSS.)

Du coup, je me demandais s'il ne serait pas judicieux pour moi de scinder ma feuille de style en plusieurs feuilles différentes... Cela signifierait avoir deux feuilles de style pour chaque page : une, commune à l'ensemble du site, contenant les styles courants (liens, listes, structure de la page, etc.), et une autre pour les styles spécifiques à chaque page.
J'hésite néanmoins :
- d'un côté, le temps de chargement s'en trouverait réduit ;
- mais d'un autre côté, cela fait 2 requêtes (on appelle deux feuilles de style à chaque fois) au lieu d'1. Et, dans le cas actuel, ma feuille de style est de toutes façons mise en cache (en tout cas, j'imagine que c'est le cas ?)

Donc, j'aimerais vos avis : 2 feuilles de style plutôt qu'une seule serait-il effectivement préférable ? Les sites aidant à optimiser le temps de chargement incitent à réduire le plus possible le nombre de requêtes effectuées, alors je ne sais pas trop à quoi m'en tenir...

Pour le fichier _public.php, cela me semble encore plus indispensable : seules quelques fonctions (rarement les mêmes d'une page à l'autre) sont utilisées sur chaque page, donc j'aimerais avoir un fichier _public.php différent pour chaque page de mon blog. Cela est-il possible ? Comment mettre cela en place ?

Merci de votre aide !

Hors ligne

#2 2012-05-17 12:10:34

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Un fichier public et une CSS par page ?

Pour le fichier _public.php, le gain sera négligeable, en effet il ne concerne que le serveur et son poids ne transite pas par Internet ;)

Pour la feuille de style, en revanche, il y a probablement matière à optimisation. La solution la plus simple est d'ajouter le lien vers le fichier css uniquement dans page.html, si ce sont des pages, ou dans post.html si ce sont des billets, avec une condition sur l'url du billet par exemple

Hors ligne

#3 2012-05-17 16:25:29

Jean-Michel
Modérateur à ailes d'ange
Lieu : Paris
Inscription : 2006-08-22
Site Web

Re : Un fichier public et une CSS par page ?

amalgame a écrit :

Pour la feuille de style, en revanche, il y a probablement matière à optimisation. La solution la plus simple est d'ajouter le lien vers le fichier css uniquement dans page.html, si ce sont des pages, ou dans post.html si ce sont des billets, avec une condition sur l'url du billet par exemple

Il y aussi ce plugin EntryCSS qui remplit cette fonction.

Hors ligne

#4 2012-05-17 16:40:12

patidou
Membre
Inscription : 2004-11-14
Site Web

Re : Un fichier public et une CSS par page ?

C'est mieux d'avoir un seul fichier (une seule requête http) et 25 Ko ce n'est pas grand chose, surtout si tu actives la compression gzip sur le serveur pour les fichiers de type texte (css, html, js, etc).


«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous

Hors ligne

#5 2012-05-18 11:53:11

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

OK pour le fichier _public.php. Je comprends mieux comment il est géré.

En ce qui concerne la CSS, j'avais essayé il y a plusieurs mois d'activer la compression gzip (en bidouillant, si je me souviens bien, dans le .htaccess), mais ça ne fonctionnait pas. Je m'y prenais sans doute mal. Quelqu'un aurait fait ça chez lui et pourrait m'indiquer la procédure à suivre ? (Le site en question est hébergé chez OVH)

Merci !

Dernière modification par fix (2012-05-18 11:54:04)

Hors ligne

#6 2012-05-18 21:58:45

patidou
Membre
Inscription : 2004-11-14
Site Web

Re : Un fichier public et une CSS par page ?

J'ai utilisé le fichier de html5 boilerplate.


«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous

Hors ligne

#7 2012-05-19 05:10:03

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

Je vais aller y jeter un oeil. Merci beaucoup !

Hors ligne

#8 2012-05-19 05:54:24

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Un fichier public et une CSS par page ?

fix a écrit :

En ce qui concerne la CSS, j'avais essayé il y a plusieurs mois d'activer la compression gzip (en bidouillant, si je me souviens bien, dans le .htaccess), mais ça ne fonctionnait pas. Je m'y prenais sans doute mal. Quelqu'un aurait fait ça chez lui et pourrait m'indiquer la procédure à suivre ? (Le site en question est hébergé chez OVH)

Chez OVH, j'utilise ceci dans mon .htaccess, à adapter bien entendu

# Turn on Expires and set default expires to 1 week
ExpiresActive On
ExpiresDefault A604800
 
# Set up caching on media files for 1 week
<FilesMatch "\.(ico|gif|jpg|jpeg|png|flv|pdf|swf|mov|mp3|wmv|ppt)$">
  ExpiresDefault A604800
  Header append Cache-Control "public"
</FilesMatch>
 
# Set up 24 Hour caching on commonly updated files
<FilesMatch "\.(xml|txt|html|js|css)$">
  ExpiresDefault A86400 
  Header append Cache-Control "public"
</FilesMatch>

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

Hors ligne

#9 2012-05-19 14:15:36

patidou
Membre
Inscription : 2004-11-14
Site Web

Re : Un fichier public et une CSS par page ?

Voici le mien reprenant en bonne partie celui de html5 boilerplate + l'activation php5 de ovh + http header pour mp3 + rewrite rule pour faire disparaître index.php des urls :

#SetEnv PHP_VER 5_TEST
SetEnv PHP_VER 5

# Force the latest IE version, in various cases when it may fall back to IE7 mode
#  github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk

<IfModule mod_headers.c>
    Header set X-UA-Compatible "IE=Edge"
    # mod_headers can't match by content-type, but we don't want to send this header on *everything*...
    <FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp3|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|manifest|htc|crx|xpi|safariextz|vcf)$" >
      Header unset X-UA-Compatible
    </FilesMatch>
</IfModule>


<IfModule mod_headers.c>
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes),
#   We need to inform proxies that content changes based on UA
  Header append Vary User-Agent
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare
</IfModule>

<FilesMatch "\.(ttf|otf|eot|woff|font.css)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>


# audio
AddType audio/ogg                      oga ogg
AddType audio/mp4                      m4a
AddType audio/mpeg                     mp3


# video
AddType video/ogg                      ogv
AddType video/mp4                      mp4 m4v
AddType video/webm                     webm

# Proper svg serving. Required for svg webfonts on iPad
#   twitter.com/FontSquirrel/status/14855840545
AddType     image/svg+xml              svg svgz 
AddEncoding gzip                       svgz
                                       
# webfonts                             
AddType application/vnd.ms-fontobject  eot
AddType font/truetype                  ttf
AddType font/opentype                  otf
AddType application/x-font-woff        woff

# assorted types                                      
AddType image/x-icon                   ico
AddType image/webp                     webp
AddType text/cache-manifest            appcache manifest
AddType text/x-component               htc
AddType application/x-chrome-extension crx
AddType application/x-xpinstall        xpi
AddType application/octet-stream       safariextz


# ----------------------------------------------------------------------
# Gzip compression
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

# Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
    RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
  </IfModule>
</IfModule>

# HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
<IfModule filter_module>
  FilterDeclare   COMPRESS
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/html
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/css
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/plain
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/xml
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $text/x-component
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/javascript
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/json
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xml
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/xhtml+xml
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/rss+xml
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/atom+xml
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/vnd.ms-fontobject
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $image/svg+xml
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $application/x-font-ttf
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type $font/opentype
  FilterChain     COMPRESS
  FilterProtocol  COMPRESS  DEFLATE change=yes;byteranges=no
</IfModule>

<IfModule !mod_filter.c>
  # Legacy versions of Apache
  AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
  AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
  AddOutputFilterByType DEFLATE image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>
</IfModule>






# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# these are pretty far-future expires headers
# they assume you control versioning with cachebusting query params like
#   <script src="application.js?20100608">
# additionally, consider that outdated proxies may miscache 
#   www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

# if you don't use filenames to version, lower the css and js to something like
#   "access plus 1 week" or so

<IfModule mod_expires.c>
  ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 month"

# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
  ExpiresByType text/cache-manifest       "access plus 0 seconds"

# your document html 
  ExpiresByType text/html                 "access plus 0 seconds"
  ExpiresByType application/xhtml+xml     "access plus 0 seconds"
  
# data
  ExpiresByType text/xml                  "access plus 0 seconds"
  ExpiresByType application/xml           "access plus 0 seconds"
  ExpiresByType application/json          "access plus 0 seconds"

# rss feed
  ExpiresByType application/rss+xml       "access plus 1 hour"
  ExpiresByType application/atom+xml      "access plus 1 hour"

# favicon (cannot be renamed)
  ExpiresByType image/x-icon              "access plus 1 week" 

# media: images, video, audio
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"
  ExpiresByType video/ogg                 "access plus 1 month"
  ExpiresByType audio/ogg                 "access plus 1 month"
  ExpiresByType audio/mpeg                "access plus 1 month"
  ExpiresByType video/mp4                 "access plus 1 month"
  ExpiresByType video/webm                "access plus 1 month"
  
# htc files  (css3pie)
  ExpiresByType text/x-component          "access plus 1 month"
  
# webfonts
  ExpiresByType font/truetype             "access plus 1 month"
  ExpiresByType font/opentype             "access plus 1 month"
  ExpiresByType application/x-font-woff   "access plus 1 month"
  ExpiresByType image/svg+xml             "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    
# css and javascript
  ExpiresByType text/css                  "access plus 2 months"
  ExpiresByType application/javascript    "access plus 2 months"
  ExpiresByType text/javascript           "access plus 2 months"
  
  <IfModule mod_headers.c>
    Header append Cache-Control "public"
  </IfModule>
  
</IfModule>

# ----------------------------------------------------------------------
# ETag removal
# ----------------------------------------------------------------------

# FileETag None is not enough for every server.
<IfModule mod_headers.c>
  Header unset ETag
</IfModule>

# Since we're sending far-future expires, we don't need ETags for
# static content.
#   developer.yahoo.com/performance/rules.html#etags
FileETag None

# ----------------------------------------------------------------------
# UTF-8 encoding
# ----------------------------------------------------------------------

# use utf-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8

# force utf-8 for a number of file formats
AddCharset utf-8 .html .xhtml .css .js .xml .json .rss


Options -MultiViews -Indexes

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteRule ^$ /index.php/ [L]

Dernière modification par patidou (2012-05-19 14:24:22)


«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous

Hors ligne

#10 2012-05-19 14:51:41

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

Merci beaucoup à vous deux ! Dès que j'ai un peu de temps (j'espère d'ici quelques jours), je teste tout cela, et je ne manquerai pas de venir faire un retour ici.

Bon week-end à tous !

Hors ligne

#11 2012-05-20 15:15:45

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

J'ai repris la partie "Gzip compression" (tout ce qui est avant - à part les 2 premières lignes - me semble assez obscure) et la partie "Expires headers" du .htaccess de patidou... et ça marche parfaitement bien !

ETag removal... ça sert vraiment à quelque chose ? Je demande ça en gros benêt ignare que je suis :)

Hors ligne

#12 2012-05-20 20:09:32

patidou
Membre
Inscription : 2004-11-14
Site Web

Re : Un fichier public et une CSS par page ?

Ben tu peux tout prendre, une partie c'est de l'optimisation pour le cache du navigateur : on donne une date d'expiration lointaine aux fichiers images, vidéos et sons pour qu'ils ne soient pas rechargés à chaque fois (pour ça il faut également enlever les etags qui servent plus à rien dans ce cas). Le reste sert à donner la bonne entête http suivant le type de fichier et activer ou non la compression.

Dernière modification par patidou (2012-05-20 20:10:51)


«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous

Hors ligne

#13 2012-05-23 14:32:33

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

Oui oui, ma question portait juste les les etags. C'est plus clair maintenant ;)

Tout ça me fait gagner 30% de temps d'affichage, c'est loin d'être négligeable. Keskondit ? Merci patidou !

Hors ligne

#14 2012-05-24 13:32:23

patidou
Membre
Inscription : 2004-11-14
Site Web

Re : Un fichier public et une CSS par page ?

Si tu ne l'a pas déjà fait, tu peux aussi installer le plugin Static Cache. C'est très efficace, surtout si tu court-circuite l'accès à la BDD (lire le README pour configurer).

Dernière modification par patidou (2012-05-24 13:34:32)


«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous

Hors ligne

#15 2012-05-24 20:30:12

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

Je vais aller voir ça de plus près. Merci !

Une question tout de même : l'utilisation d'un tel fichier .htaccess, qui active entre autres la compression gzip, fait-elle absolument doublon avec l'emploi d'un plugin comme CompreSS ?

Hors ligne

#16 2012-05-24 21:01:07

patidou
Membre
Inscription : 2004-11-14
Site Web

Re : Un fichier public et une CSS par page ?

Compress supprime à l'intérieur des fichiers ce qui n'est pas nécessaire (tabulations, retours, espace, etc), gzip comprime vraiment le fichier comme un fichier zip. C'est plutôt complémentaire.

Pour les images, on peut utiliser un service comme smush.it.


«Quand j'étais petit, je voulais être maître du monde. Maintenant que je suis grand, j'arrive à peine à être maître de moi-même.» Le Chat/Philippe Geluk.
Dotclear a besoin de vous

Hors ligne

#17 2012-05-25 04:11:24

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

Il ne serait donc pas inutile d'utiliser les deux. Merci beaucoup !

Hors ligne

#18 2012-05-28 09:52:41

fix
Membre
Inscription : 2005-01-20
Site Web

Re : Un fichier public et une CSS par page ?

Gnnn ??? Kékidit ?

Pour en revenir à l'utilisation conjointe de la compression gzip et du plugin CompreSS, ça diminue la taille des fichiers chargés par l'utilisateur de 1 ko seulement... ce qui est négligeable. Dans la mesure où je fais assez régulièrement des ajustements à ma feuille de style, je me contenterai donc de la compression gzip, sans me contraindre en plus à compresser mes CSS.

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map