web-dev-qa-db-fra.com

Comment activer gzip?

J'ai trouvé quelques tutoriels sur la façon d'activer gzip, mais rien ne semble fonctionner pour moi, donc ma question est de savoir comment activer gzip. Je suis sur un serveur d'hébergement Dreamhost partagé, il fonctionne PHP version 5.2, et Apache, à partir des informations php que j'ai trouvées cette ligne, peut-être que cela pourrait aider?

zlib

ZLib Support    enabled
Stream Wrapper support  compress.zlib://
Stream Filter support   zlib.inflate, zlib.deflate
Compiled Version    1.2.3.3
Linked Version  1.2.3.3

Directive   Local Value Master Value
zlib.output_compression Off Off
zlib.output_compression_level   -1  -1
zlib.output_handler no value    no value

J'ai aussi trouvé cette ligne

_SERVER["HTTP_ACCEPT_ENCODING"] gzip, deflate

Je ne sais pas si cela a quelque chose à voir avec ça. Mais c'est ma première question, deuxièmement, j'ai dropbox, hébergeant un fichier javscript, et je me demande s'il est possible d'avoir ce fichier compressé, il n'est pas transféré compressé, alors y a-t-il un moyen de le faire?

28
mcbeav

Avez-vous essayé avec ob_gzhandler?

manuel php

<?php
ob_start("ob_gzhandler");
?>
<html>
<body>
<p>This should be a compressed page.</p>
</html>
<body>

Astuce: Parfois, il est assez difficile de détecter si le Web est envoyé compressé ou non, j'utilise le plugin firebug de firefox, j'ai testé un fichier php sans compression et avec compression et compare la taille, dans mon cas, la différence était de 1 Mo (non compressé) et 56 Ko compressés.

Ou dans votre .htaccess

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css         application/x-javascript application/javascript
</IfModule>
50
magallanes

Dans le wiki officiel de Dreamhost, ils permettent cela en modifiant un htaccess :

<IfModule mod_gzip.c>
    mod_gzip_on       Yes
    mod_gzip_dechunk  Yes
    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl|jpg|png|gif)$
    mod_gzip_item_include handler   ^cgi-script$
    mod_gzip_item_include mime      ^text/.*
    mod_gzip_item_include mime      ^application/x-javascript.*
    mod_gzip_item_exclude mime      ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>

Cela vérifie essentiellement si mod_czip.c est trouvé et s'il l'est, il compressera les fichiers pour vous afin qu'ils soient plus rapides à envoyer au navigateur. Cela accélère soi-disant les temps de téléchargement de 35 à 40%, puis la taille du fichier devrait passer à 55 à 65%.

Avec une recherche rapide sur Google, vous pouvez trouver un autre thread sur Stackoverflow an dans un tiers site traitant de ce problème.

6
pablasso

Dans Apache, l'activation de la compression de sortie est assez simple. Ajoutez ce qui suit à votre fichier .htaccess:

# compress text, html, javascript, css, xml:
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

# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

Source: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

5
Kamlesh

Tout ce que j'avais à faire pour activer l'encodage au niveau Apache est

zlib.output_compression = 1 // the PHP.ini file

cela fera le serveur faire la vérification d'en-tête de demande nécessaire, compresser, envoyer les en-têtes associés

vous pouvez également le faire dans vos fichiers PHP avant la ob_start()

ini_set("zlib.output_compression", 1);

Et pour que Apache comprime les ressources statiques (par exemple: fichiers .js, fichiers .css), faites comme Kamlesh dans sa réponse

5
Accountant م

## Tout d'abord, vous devez modifier le paramètre WHM (serveur) pour activer Gzip. Après cela, apportez des modifications au paramètre cPanel ##

  1. Pour le réglage WHM => Easy Apache => Liste des options exhaustives <ici activer - dégonfler tab>

  2. Pour le paramètre cPanel => Sofware/Services => Optimiser le site Web <ici, choisissez l'option que vous voulez>

3
vinod

La compression peut se faire de deux manières.

Apache a en fait deux options de compression:

  • mod_deflate est plus facile à configurer et est standard.
  • mod_gzip semble plus puissant: vous pouvez pré-compresser le contenu.

Le dégonflage est rapide et fonctionne, donc je l'utilise; utilisez mod_gzip si cela fait flotter votre bateau. Dans les deux cas, Apache vérifie si le navigateur a envoyé l'en-tête "Accept-encoding" et renvoie la version compressée ou régulière du fichier. Cependant, certains navigateurs plus anciens peuvent avoir des problèmes (plus ci-dessous) et il existe des directives spéciales que vous pouvez ajouter pour corriger cela.

Si vous ne pouvez pas modifier votre fichier .htaccess, vous pouvez utiliser PHP pour renvoyer le contenu compressé. Donnez à votre fichier HTML une extension .php et ajoutez ce code en haut:

En PHP:

<?php if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’))
ob_start(“ob_gzhandler”); else ob_start(); ?>

Nous vérifions l'en-tête "Accept-encoding" et renvoyons une version compressée du fichier (sinon la version régulière). C'est presque comme construire votre propre serveur web (quel plaisir!). Mais vraiment, essayez d'utiliser Apache pour compresser votre sortie si vous pouvez l'aider. Vous ne voulez pas singe avec vos fichiers.

Référence: http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/

1
Avi Tyagi