8791 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Je n'arrive pas à comprendre ce qui gêne la compression Gzip.

Par exemple, sur la page index.php on aura :
"Page Speed" a écrit :
Si vous compressez les ressources suivantes à l'aide de gzip, vous pourriez réduire la taille du transfert de 38.7 Ko (réduction de 63%).
Si vous compressez http://.../ga.js, vous pourriez libérer 21.3 Ko (réduction de 59%).
Si vous compressez http://.../correction.css, vous pourriez libérer 9.3 Ko (réduction de 77%).
Si vous compressez http://.../index.php, vous pourriez libérer 8.2 Ko (réduction de 62%).


Par contre, sur cette même page :
"Webtoolhub a écrit :
Web Server Apache/2.2.X (monhébergeur)
Compression Status Compressed (gzip)
Bytes Saved 64.29%
Transfer Speed Gain 2.8 X

Si on regarde les détails, on constate cependant qu'il ne parle que de 13 169 octets réduits à 4 739.

Voici mon fichier :

SetEnv PHP_VER 5_TEST
SetEnv REGISTER_GLOBALS 0

Options +FollowSymLinks

# Activation de la réécriture des URL.
RewriteEngine on
RewriteCond %{HTTP_HOST}  www.monsite.fr
 
RewriteRule (.*)  http://monsite.fr/$1  [L,R=301]

# exploits communs
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ /mondossier/403.php [F,L]

# Interdiction du listage des répertoires
Options -Indexes
# Redirection des erreurs
ErrorDocument 404 /mondossier/404.php
ErrorDocument 403 /mondossier/403.php
ErrorDocument 500 "Vous n'avez pas le droit de voir ce fichier"

# Ajout des types MIME vidéos
AddType video/ogg  .ogv
AddType video/mp4  .mp4
AddType video/webm .webm

# BEGIN Expire headers
<IfModule mod_expires.c>
 ExpiresActive On
 ExpiresDefault "access plus 7200 seconds"
 ExpiresByType image/jpg "access plus 604800 seconds"
 ExpiresByType image/jpeg "access plus 604800 seconds"
 ExpiresByType image/png "access plus 604800 seconds"
 ExpiresByType image/gif "access plus 604800 seconds"
 AddType image/x-icon .ico
 ExpiresByType image/ico "access plus 604800 seconds"
 ExpiresByType image/icon "access plus 604800 seconds"
 ExpiresByType image/x-icon "access plus 604800 seconds"
 ExpiresByType text/css "access plus 604800 seconds"
 ExpiresByType text/javascript "access plus 604800 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 604800 seconds"
 ExpiresByType application/x-shockwave-flash "access plus 604800 seconds"
</IfModule>
# END Expire headers

# Compression
# Activer le filtre
SetOutputFilter DEFLATE
# navigateurs problèmes
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Pas les images
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Pour les proxy
Header append Vary User-Agent env=!dont-vary

# protection du fichier htaccess
<files .htaccess>
order allow,deny
deny from all
</files>

Modifié par Pyanepsion (02 Jul 2012 - 16:50)
Bonjour,

je ne suis pas expert en la matière, mais il me semble que la partie de ton .htaccess concernant la compression est un peu légère. As-tu lu l'article sur ce sujet sur Alsa ? Tu trouveras peut-être quelques réponses..

Bonne continuation !!

Si vous compressez  http://.../ga.js,  vous pourriez libérer 21.3 Ko (réduction de 59%).


Ça c'est le script Google Analytics. Il est servi par les serveurs de Google donc tu pourra pas le compresser.
@jb_gfx : Le problème est plus général au js. Sur la page /prestations/correction.php on rencontre le même genre de message avec mon script perso.

@Ten : Là ça fait carrément planter :
"Internal Server Error" a écrit :
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@monsite.fr and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Bonjour,

Depuis https://github.com/h5bp/html5-boilerplate/blob/master/.htaccess

# ----------------------------------------------------------------------
# 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 $image/x-icon
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/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
</IfModule>

</IfModule>
Aucune idée. Comment le trouve-t-on ?

Je pense cependant que tu as trouvé. Je suis chez un certain Oles Van Herman avec un hébergement mutualisé Perso. Sur leur forum, il semble que cela soit dû à un problème récurrent de configuration. Je leur pose la question.
Bonjour,

est-ce que l'extension mod_deflate est dispo sur ovh en mutu ?

Par exemple, chez l'autre grand hébergeur 1and1, l'option n'est pas dispo. Pour les ressources js et css, une solution consiste à la compression à la volé. En fait, les ressources sont compressées dans script php et non via htacces.
J'ai regroupé la mise en place de la compression dans un billet:
http://www.fobec.com/CMS/web/webmaster/compression-gzip-des-fichiers-css-javascript-chez-1and1_1114.html

p'etre que ça marche aussi sur ovh
La réponse officielle est :
"OVH a écrit :

Le Gzip est bien actif sur nos hébergements mutualisés ainsi que le module Apache mod_deflate ,vous pouvez vérifier dans la page de la configuration d’apache sur les hébergements mutualisés http://httpd.apache.org/docs/2.2/mod/mod_deflate.html

Vous pouvez svp ajouter ce code au début de chaque script php et retester et nous faire un retour :
<?php
ob_start('ob_gzhandler');
?>

Puis :
"OVH a écrit :
Svp essayez de vérifier le pourcentage donné pour la compression gzip après avoir testé votre site sur http://www.webtoolhub.com/tn561386-compression-checker.aspx
et ensuite comparez avec les pourcentages que vous avez précédemment

Modifié par Pyanepsion (04 Jul 2012 - 10:55)
Au final, il s'avère que c'est un bogue de Bitdefender. Le problème n'apparait plus quand on utilise un autre ordinateur sans Bitdefender. C'est un bogue connu, mais mal résolu de la dernière version.