Qu'est-ce que l'algorithme de compression brotli ?
brotli a été initialement publié en 2015 pour la compression hors ligne des polices Web. Les ingénieurs logiciels de Google ont publié une version améliorée de brotli en septembre 2015, qui incluait une compression générale des données sans perte, avec un accent particulier sur la compression http. L'encodeur a été partiellement réécrit pour améliorer le taux de compression, la vitesse de l'encodeur et du décodeur a été augmentée et l'API de streaming a été améliorée pour ajouter davantage de niveaux de qualité de compression. La nouvelle version présente également des améliorations de performances multiplateformes et une réduction de la mémoire requise pour le décodage.
Contrairement aux algorithmes de compression courants à usage général, brotli utilise un dictionnaire prédéfini de 120 kilo-octets. Le dictionnaire contient plus de 13 000 mots, expressions et autres sous-chaînes courants tirés d’un vaste corpus de documents texte et HTML. Les algorithmes prédéfinis augmentent la densité de compression pour les fichiers plus petits.
Utiliser brotli au lieu de dégonfler pour compresser des fichiers texte peut généralement augmenter la densité de compression de 20 %, tandis que les vitesses de compression et de décompression restent à peu près les mêmes. Il a été proposé que le type de codage de contenu pour la compression de flux utilisant brotli soit "br".
Installation
1. Téléchargez brotli
git clone https://github.com/google/ngx_brotli cd ngx_brotli && git submodule update --init
2. Compilez
Ajoutez –add-module=/opt/nginx/ngx_brotli après la configuration de compilation originale
Par exemple
Copiez le code Le code est tel que suit :
./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/opt/nginx/pcre-8.41 --with-http_ssl_module --with- zlib=/opt /nginx/zlib-1.2.11 --with-openssl=/opt/nginx/openssl-1.0.2n --add-module=/opt/nginx/ngx_brotli --with-http_v2_module
Configuration, ajouter
dans la section httphttp { include mime.types; default_type application/octet-stream; sendfile on; tcp_nopush on; keepalive_timeout 65; #brotli compression brotli on; brotli_comp_level 6; brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml; ……
Redémarrez, actualisez la page pour afficher l'en-tête et constatez qu'il y a
accept-encoding:gzip, deflate, br
comme indiqué sur l'image
, ce qui signifie que la compression brotli est activée
Instructions de configuration
Introduction à la commande
La commande suivante est définie :
brotli, s'il faut autoriser la compression dynamique des données de réponse, les valeurs facultatives sont activées et désactivées et la valeur par défaut est désactivée. Un exemple est le suivant :
brotli on;
brotli_types, lorsque la compression dynamique est activée, les types MIME compressés sont autorisés et la valeur par défaut est text/html. Un exemple est le suivant :
brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript;
brotli_static, s'il faut autoriser la recherche de fichiers compressés prétraités se terminant par .br, les valeurs facultatives sont activées, désactivées et toujours, et la valeur par défaut est désactivée. L'exemple est le suivant :
brotli_static off;
brotli_comp_level, niveau de compression, la plage de valeurs facultative est de 0 à 11 et la valeur par défaut est de 6. Un exemple est le suivant :
brotli_comp_level 11;
brotli_buffers, le nombre et la taille des tampons utilisés lors de la compression des données de réponse. L'exemple est le suivant :
brotli_buffers 16 8k;
brotli_window, la valeur de la fenêtre utilisée par brotli, la valeur par défaut est 512k. Un exemple est le suivant :
brotli_window 512k;
brotli_min_length, la longueur minimale des données de réponse en dessous de cette valeur, l'algorithme brotli ne sera pas utilisé pour effectuer les opérations de compression. L'algorithme brotli utilise la longueur du contenu pour déterminer la longueur des données de réponse. Un exemple est le suivant :
brotli_min_length 20;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!