web-dev-qa-db-fra.com

problèmes de compression zlib

J'ai des problèmes avec la compression zlib sur mon site.

Premièrement, si j'active la compression zlib dans .htaccess en utilisant: php_value output_handler ob_gzhandler, je reçois des milliers de lignes de l'erreur suivante:

Avertissement PHP: Impossible de modifier les informations d'en-tête - les en-têtes ont déjà été envoyés dans Unknown sur la ligne 0.

J'ai vérifié tous les fichiers utilisés pour les espaces et tous les autres caractères qui ne devraient pas y figurer avec un éditeur hexadécimal, mais je ne pouvais pas faire disparaître cette erreur avec zlib activé dans .htaccess.

C'est pourquoi j'ai essayé d'activer la compression zlib dans le fichier php.ini en utilisant:

zlib.output_compression "1"
zlib.output_compression_level "1"

Cependant, les vérificateurs de compression me disent maintenant que la compression n’est pas activée et que le format ne semble pas être correct?

2
Dan

La première chose à garder à l’esprit est que les vérificateurs de compression mentent parfois pour diverses raisons; prenez donc leurs avertissements avec un grain de sel. Comme quelques personnes l'ont récemment dit sur Stack Overflow, ySlow n'est pas un évangile (mais je l'aime moi-même).

Ce que je suggérerais de faire, plutôt que d'utiliser zlib.output_compression en php, est d'activer mod_deflate dans Apache. Cela capturera et compressera également les fichiers statiques (par exemple, si vous avez des fichiers texte statique/csv/xml à servir). N'oubliez pas que vous ne souhaitez pas compresser la plupart des éléments multimédias, tels que les images et les vidéos, car les frais généraux impliqués sont proportionnellement inefficaces par rapport à la réduction de la taille du fichier (qui est pratiquement nulle).

Voici un exemple pertinent pour httpd2, mais il y a beaucoup plus d'options à choisir (consultez le manuel) :

<Location />
 # Insert filter
 SetOutputFilter DEFLATE

 # Netscape 4.x has some problems...
 BrowserMatch ^Mozilla/4 gzip-only-text/html

 # Netscape 4.06-4.08 have some more problems
 BrowserMatch ^Mozilla/4\.0[678] no-gzip

 # MSIE masquerades as Netscape, but it is fine
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 # Don't compress images
 SetEnvIfNoCase Request_URI \
 \.(?:gif|jpe?g|png)$ no-gzip dont-vary

 # Make sure proxies don't deliver the wrong content
 Header append Vary User-Agent env=!dont-vary
</Location>
5
msanford