8796 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je suis novice dans le domaine de l'optimisation de la vitesse des données "coté client" (css / html / js ..) et j'aurais besoin de vos lumières.

J'ai passé mon site avec YSlow, et il me donne plusieurs pistes :
- Add Expires headers (Pour mes images, css et JS)
- Compress components with gzip (Pour mes CSS / JS)
- Configure entity tags (ETags) (Pour mes images, css et JS)

J'ai beau chercher sur le net, je ne comprend pas comment gérer cela.

Le plus simple serait j'imagine avec un htaccess par site (le serveur héberge nombre de sites) qui définierais les règles à utiliser.

Etant plus spécialisé graphisme et code serveur, je vous avoir que je sèche un peu Smiley bawling

Merci par avance pour vos conseils Smiley ravi
Salut,
pour la css : http://www.minifycss.com/css-compressor/ , le nom est explicite... en fonction de ton codage cela peut diminuer le poids de ta css jusqu'à 50%. Petit bémol à mon goût cela supprime tes commentaires (pas les commentaires additionnels naturellement).

pour les pages, sur chacune, met en haut :
<? ob_start("ob_gzhandler"); ?> 


C'est simplement super efficace, regarde le poids de ta page (avant et après), là aussi c'est aussi divisé par 2.

Déjà Mr Yslow te regardera d'un autre oeil Smiley cligne

@plus
Merci pour vos pistes Smiley cligne

J'ai commencé par le GZip, et je n'arrive pas à le faire fonctionner ...

Mon phpinfo me dit :
ZLib Support enabled
Stream Wrapper support compress.zlib://
Stream Filter support zlib.inflate, zlib.deflate
Compiled Version 1.2.3
Linked Version 1.2.3

Dans mon code, j'inclus en haut de page :
error_reporting(E_ALL);


/**************************************************
 **************** Gestion du chemin ***************
 **************************************************/
session_start();
if (!isset($MREL)){	$MREL = "./";	}
$_SESSION["MREL"] 	= $MREL;

/**************************************************
 *********** Gestion de la comptession ************
 **************************************************/
ini_set('zlib.output_compression',TRUE);
ini_set('zlib.output_compression_level',2);
ob_start("ob_gzhandler");


Et j'ai l'erreur :
Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' conflicts with 'zlib output compression' ... on line 26

La ligne 26 est justement le ob_start.

J'ai beau chercher je ne vois pas d'ou vient le problème.

Pouvez-vous me renseigner ?
Pardon pour mon ignorance, mais dès que je rajoute un fichier .htaccess, mon site n'est plus visible ... Il doit y avoir une ligne spéciale à rajouter non ?

Edit : Finalement, il y avait une ligne que mon serveur Windows n'aimait pas.

Par contre YSlow me donne toujours la meme note et les memes conseils.
exemple : There are 44 static components without a far-future expiration date. (no expires) xxx/CSS/layout.css
Alors que dans mon htaccess je dis bien que les css ont une date d'expiration ...

Mon htaccess est :
# MOD_DEFLATE COMPRESSION
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/x-httpd-php
#Pour les navigateurs incompatibles
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
#ne pas mettre en cache si ces fichiers le sont déjà
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip

# BEGIN Expire headers
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 7200 seconds"
 ExpiresByType image/jpg "access plus 2592000 seconds"
 ExpiresByType image/jpeg "access plus 2592000 seconds"
 ExpiresByType image/png "access plus 2592000 seconds"
 ExpiresByType image/gif "access plus 2592000 seconds"
 AddType image/x-icon .ico
 ExpiresByType image/ico "access plus 2592000 seconds"
 ExpiresByType image/icon "access plus 2592000 seconds"
 ExpiresByType image/x-icon "access plus 2592000 seconds"
 ExpiresByType text/css "access plus 2592000 seconds"
 ExpiresByType text/javascript "access plus 2592000 seconds"
 ExpiresByType text/html "access plus 7200 seconds"
 ExpiresByType application/xhtml+xml "access plus 7200 seconds"
 ExpiresByType application/javascript A259200
 ExpiresByType application/x-javascript "access plus 2592000 seconds"
 ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"
</IfModule>
# END Expire headers


# BEGIN Cache-Control Headers
<IfModule mod_headers.c>
 <FilesMatch "\\.(ico|jpe?g|png|gif|swf|css|gz)$">
 Header set Cache-Control "max-age=2592000, public"
 </FilesMatch>
 <FilesMatch "\\.(js)$">
 Header set Cache-Control "max-age=2592000, private"
 </FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers

FileETag none

# protect the htaccess file
<files .htaccess>
order allow,deny
deny from all
</files>


Cela voudrais dire que ma page php ne "vois" pas mon htaccess ?
Modifié par ElPix (22 Nov 2011 - 10:26)
concernant
<? ob_start("ob_gzhandler"); ?>
, il doit être placé en haut de page avant tout tes codes :

<? ob_start("ob_gzhandler"); ?>
<!DOCTYPE html PUBLIC ...


Il doit être utilisé de manière autonome et par conséquent ne peut (pas) être utilisé avec d'autres système de compression, sinon il y a conflit...

Il te suffit après de vérifier sur le site qui va bien que tes pages sont effectivement compressées.