Activer la compression GZIP

Dans cette documentation

Comment la compression GZIP fonctionne ?

La compression GZIP permet de compresser le contenu HTML, CSS et JS de sorte que les fichiers envoyés par le serveur au navigateur du visiteur soient plus petits. Une taille de fichier plus petite signifie un téléchargement plus rapide et améliorera le temps de chargement global de votre page. Nous avons une explication détaillée sur notre blog.

Remarque : La compression GZIP ne peut être appliquée qu'aux fichiers servis à partir de votre propre domaine et NON aux ressources externes - Facebook, Google, etc

Comment WP Rocket applique la compression GZIP

Sur les serveurs Apache/LiteSpeed, WP Rocket ajoute les règles de compression GZIP à votre fichier .htaccess en utilisant un module mod_deflate. Voici les règles que nous ajoutons à votre fichier htaccess:  ;

# Gzip compression
<IfModule mod_deflate.c>
# Active compression
SetOutputFilter DEFLATE
# Force deflate for mangled headers
<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
# Don’t compress images and other uncompressible content
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
<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/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 mod_headers.c>
Header append Vary: Accept-Encoding
</IfModule>
</IfModule>
<IfModule mod_mime.c>
AddType text/html .html_gzip
AddEncoding gzip .html_gzip
</IfModule>
<IfModule mod_setenvif.c>
SetEnvIfNoCase Request_URI \.html_gzip$ no-gzip
</IfModule>

Il y a donc 2 conditions pour que la compression GZIP fonctionne :

  1. mod_deflate  doit être activé sur le serveur (demandez à votre hébergeur), 
  2. Les règles nécessaires, placées dans le fichier de configuration de votre serveur .htaccess, situé à la racine de votre site.

Les fichiers CSS/JS/HTML sont pré-compressés

Lorsque WP Rocket crée le fichier de cache pour chaque page, il crée 2 versions - un fichier HTML et un fichier GZIP. La version GZIP sera généralement servie, mais le HTML est là comme solution de repli.

Lorsque des optimisations de fichiers sont appliquées, telles que Minifier/Combiner CSS et JS, WP Rocket crée également 2 versions de chaque fichier. Un fichier CSS/JS standard et une version pré-compressée. Mais la version pré-compressée ne sera pas servie automatiquement.

Veuillez consulter ce guide pour plus d'informations sur cette option.

Votre serveur doit avoir la fonction gzencode disponible en PHP.

Résoudre les problème d'alertes "enable compression"

Vous avez peut-être utilisé un outil comme Pingdom, GT Metrix ou autre pour vérifier les performances de votre site Web et avez vu l'une des recommandations suivantes, ou d'autres similaires :

  • "Compress components with GZIP" - Pingdom 
  • "activer la compression" ou "enable text compression” - PageSpeed / Lighthouse
  • "enable compression" - GT Metrix
  • "compress components" - Yslow
  1. Pingdom ne fournit pas la liste des fichiers spécifiques qui sont signalés, donc si c'est ce que vous avez utilisé, relancez le test en utilisant soit GT Metrix soit PageSpeed.
  2. Cliquez ensuite sur le message pour le développer et afficher la liste des fichiers qui sont signalés.

  3. Les fichiers listés sont-ils hébergés sur votre domaine ?
  4. Si les fichiers sont externes, c'est-à-dire non servis depuis votre propre domaine, vous ne pouvez pas les compresser.

    Vous pouvez en savoir plus à ce sujet dans notre doc :  Gérer les ressources externes

    Si les fichiers signalés sont hébergés sur votre domaine, vérifiez les points suivants :

  5. Votre site utilise-t-il un fichier htaccess ? 
  6. Comme décrit ci-dessus, WP Rocket ajoute les règles de compression dans le fichier htaccess.  Vérifiez auprès de votre hébergeur si :
    • Votre site utilise bien un fichier htaccess. Si c’est bien le cas, vérifiez ce fichier pour voir si les blocs de règles y sont bien présents
    • Mod_deflate est bien activé
  7. Quelle est la taille du fichier ?
    Certains serveurs, ont des tailles de fichiers maximales et minimales par défaut pour la compression. Si le fichier est très grand ou très petit, il pourra ne pas être compressé.
  8. Tous les composants ne doivent pas être compressés 
    Par exemple, les très petits fichiers ne bénéficieront pas de la compression, et certains types de fichiers ne devraient pas être compressés. Plus d’infos [EN]

HTML non Gzipé

Dans certaines configurations de serveur, tous les éléments statiques seront correctement compressés, mais vous pouvez recevoir un avertissement concernant le document HTML comme n'étant pas compressé. 

Il y a 2 possibilités pour résoudre ce problème : 

1. Assurez-vous que le cache est servi par nos règles de réécriture htaccess

  • Désactivez Créer un fichier de cache à part pour les mobiles (ce n’est pas nécessaire sur la plupart des sites qui ont des thèmes réactifs) 
  • Désactivez la mise en cache pour les utilisateurs WordPress connectés

2. Si aucune des configurations ci-dessus n’a d'effets (parfois nos réécritures htaccess sont supprimées pour la compatibilité), essayez d’activer la compression zlib sur votre serveur:

Ajoutez la directive suivante à votre fichier user.ini ou php.ini placé dans la racine WordPress :
zlib.output_compression = On
N’oubliez pas de vérifier sur votre site par la suite !

Infos pour les admins serveur

Si vous utilisez votre propre serveur, voici quelques conseils sur ce dont vous avez besoin pour appliquer la compression GZIP. Notez que nous ne pouvons pas fournir de support pour les modifications de la configuration de votre serveur. Nous fournissons cette information comme une ressource utile :)

Apache/LiteSpeed

Si vous utilisez un serveur Apache/LiteSpeed dédié, vous pouvez activer mod_deflate en exécutant cette ligne de commande :

a2enmod deflate

…et redémarrez le serveur ensuite :

service apache2 restart

NGINX

NGINX ne contient pas de .htaccess donc pour activer GZIP sur NGINX vous pouvez suivre ce guide :  
https://rtcamp.com/tutorials/nginx/enable-gzip/

Ou vous pouvez utiliser cette configuration alternative pour NGINX, procurée par un de nos clients :
https://github.com/maximejobin/rocket-nginx

Cela a-t-il répondu à votre question ? Merci pour votre retour :) Une erreur est survenue lors de l’envoi de votre retour. Veuillez réessayer plus tard.