Compression php_flag

  • Auteur de la discussion Auteur de la discussion arnaudmn
  • Date de début Date de début
WRInaute passionné
Bonjour,

Pour limiter la taille des pages, et donc pour accélérer les chargements, on peut mettre dans le fichier .htaccess :
<FilesMatch "\.(php|html?)$">
php_flag zlib.output_compression On
</FilesMatch>

Avec IE, j'ai vu que ça fonctionne pas (supporte pas ce mode !). Avec Firefox, ça semble OK.
Mais avec les robots, ça va faire quoi ? Ou avec d'autres navigateurs ? Y'a un risque que ma page ne soit plus visible par tout le monde si je met ça ?
 
WRInaute impliqué
arnaudmn a dit:
Avec IE, j'ai vu que ça fonctionne pas (supporte pas ce mode !)
ca me parait malheuresement une bonne raison de l'oublier :(
(avec plus de 50% d'utilisation d'ie6 par les internautes)
 
WRInaute passionné
julienr a dit:
ca me parait malheuresement une bonne raison de l'oublier :(

Et en plus, ça a pas eu l'air de fonctionner chez ovh 8O
A la place, j'ai ajouté :
Code:
ob_start("ob_gzhandler");
en début des pages. Et là, ça semble réduire la taille des pages, donc chargement plus rapide (et ça fonctionne aussi avec IE)
 
WRInaute impliqué
oui à en lire la doc, ca marche aussi avec IE parce que dans ce cas il ne compresse pas la page.

l'autre solution peut être aussi de le faire au niveau serveur (pas besoin de toucher au php) avec le mod deflate d'apache2.
avec une config comme celle ci les différents cas sont traités :

httpd.apache.org/docs/2.0/mod/mod_deflate.html#recommended a dit:
<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

# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !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>
 
WRInaute passionné
julienr a dit:
oui à en lire la doc, ca marche aussi avec IE parce que dans ce cas il ne compresse pas la page.

Ben ..... si. Du moment que le navigateur envoi gzip dans l'en-tête accept_encoding, la page est compressée.
Voir -www.whatsmyip.org/mod_gzip_test
 
WRInaute impliqué
ok IE >= 5.0 envoi l'entête gzip

http://fr3.php.net/zlib a dit:
les pages sont compressées si le navigateur envoie un en-tête "Accept-Encoding: gzip" ou "deflate". Les en-têtes "Content-Encoding: gzip" (respectivement "deflate") et "Vary: Accept-Encoding" sont ajoutés dans la page envoyée au navigateur.

bizzare car zlib.output_compression devrait d'après ce qui est dit au dessus fonctionner pareil.

http://fr3.php.net/manual/fr/function.ob-gzhandler.php a dit:
Note: Vous ne pouvez pas utiliser simultanément ob_gzhandler() et zlib.output_compression. De plus, notez bien que zlib.output_compression est préférable à ob_gzhandler().

en tout cas merci pour l'info
 
WRInaute impliqué
arnaudmn a dit:
A la place, j'ai ajouté :
Code:
ob_start("ob_gzhandler");
en début des pages. Et là, ça semble réduire la taille des pages, donc chargement plus rapide (et ça fonctionne aussi avec IE)

j'ai placé ce code sur une page pour tester le gain (d'ailleur faut il un ob_end_flush(); à la fin de la page ?) et impossible de constater que l'entête qui dit que c'est compressé, est présente :-(
pour cela j'utilise wget -S

comment être sur que cela marche ?
 
WRInaute impliqué
bon je me répond :D
en fiate, il faut préciser :
wget -S --header='Accept-Encoding: gzip,deflate' http://www.toto.fr/titi.html
et pas besoin de ob_end_flush()
j'ai constaté qu'en moyenne les pages gagnait près de 80% de poids
maintenant sur un serveur chargé que donne cette méthode ou quel pourcentage de cpu en plus ?
 
WRInaute discret
comme indiqué dans la doc, si le client ne supporte pas les pages compressées, le serveur enverra une page non compressée
donc aucun souci avec les moteurs de recherche
 
WRInaute discret
Désolé de déterre ce topic mais c'est assez intéressant.
En gros, si on a Apache 2 on utilise le mode Deflate et si c'est pas possible, un petit coup de ob_start("ob_gzhandler");

Peut-on mettre les deux ensemble sur un serveur avec Apache 2 ?
J'ai déjà eu des petits soucis avec Infomaniak et mon .htaccess modifié, j'ai vraiment mis un max de conditions et il m'a affiché une belle erreur 500 je crois.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut