Comment activer la compression Gzip ou Deflate via .htaccess?

22

Comment activer la compression Gzip ou Deflate via .htaccess et lequel est le meilleur de nos jours? Exemples de code nécessaires.

dzhi
la source

Réponses:

15

HTML5 Boilerplate ( http://html5boilerplate.com ) offre ce qui semble être le meilleur et le plus efficace paramètre de solution ainsi que de nombreux autres comme la mise en cache, les types MIME, etc. Fortement recommandé.

<IfModule mod_deflate.c>

# Force compression for mangled headers.
# http://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>


# Compress all output labeled with one of the following MIME-types
# (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
#  and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines
#  as `AddOutputFilterByType` is still in the core directives).

<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/x-web-app-manifest+json \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>

</IfModule>

EDIT: Étant donné que cette question et la réponse continuent d'être votées après quelques années, je mets le lien de configuration du serveur H5BP pour une optimisation plus complète .

EDIT: lien fixe vers https://github.com/h5bp/server-configs-apache

dzhi
la source
12

Voir la documentation Apache mod_deflate , en particulier, l'exemple " compresser tout sauf les images ". Cela a bien fonctionné pour moi et serait mis dans un .htaccessfichier comme suit:

<IfModule mod_deflate.c>
        # 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
</IfModule>

Et, bien sûr, assurez-vous que vous avez les éléments suivants dans votre httpd.conffichier pour activer mod_deflate:

LoadModule deflate_module libexec/apache2/mod_deflate.so
morgant
la source
9

J'ai activé le dégonflage sur les actifs statiques de mon site (par type MIME) à l'aide des éléments suivants ajoutés au .htaccessfichier à la racine de mon public_htmlrépertoire:

<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain
  AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json
</ifModule>

Vous pouvez également l'activer par extension de fichier, bien que je n'ai pas la syntaxe pour cela à portée de main.

Andrew Hedges
la source