Maison  >  Article  >  Opération et maintenance  >  Comment configurer la compression Gzip pour l'optimisation des performances Nginx

Comment configurer la compression Gzip pour l'optimisation des performances Nginx

PHPz
PHPzavant
2023-05-29 17:40:402518parcourir

Nginx active la fonction de compression Gzip, qui peut compresser les fichiers css, js, xml et html du site Web pendant la transmission, améliorer la vitesse d'accès, puis optimiser les performances de Nginx Images, vidéos et autres multimédias ! fichiers sur le site Web ainsi que les fichiers volumineux, car l'effet de compression n'est pas bon, il n'est pas nécessaire de prendre en charge la compression des images. Si vous souhaitez optimiser, vous pouvez définir le cycle de vie de l'image pour qu'il soit plus long et laisser le temps. le client le met en cache. Après avoir activé la fonction Gzip, le serveur Nginx compressera le contenu envoyé, tel que css, js, xml, html et autres ressources statiques selon la politique configurée, afin que la taille du contenu soit réduite et que l'utilisateur traite avant de recevoir le contenu renvoyé. Les données compressées sont affichées au client. Cela peut non seulement économiser beaucoup de bande passante de sortie et améliorer l'efficacité de la transmission, mais également améliorer l'expérience de perception rapide de l'utilisateur, faisant d'une pierre deux coups, même si cela consomme une certaine quantité de ressources CPU, cela vaut toujours la peine de le donner aux utilisateurs ; une meilleure expérience.

L'utilisation de la compression Gzip peut réduire la taille de la page à 30 % ou moins de la taille d'origine, afin que les utilisateurs puissent parcourir la page plus rapidement. La page compressée de Gzip doit être prise en charge à la fois par le navigateur et par le serveur. Il s'agit en fait d'une compression côté serveur. Après avoir été transmise au navigateur, le navigateur la décompresse et l'analyse. Pour l'instant, nous n'avons pas à nous soucier des problèmes de navigateur, car la plupart des navigateurs peuvent analyser les pages compressées avec Gzip.

Fonction de compression Gzip : Vous pouvez activer la fonction de compression avant d'envoyer le rapport de réponse au client, ce qui peut efficacement économiser de la bande passante et améliorer la vitesse de réponse au client. . La compression Gzip peut être configurée sous les modules http, serveur et localisation. Description des paramètres d'activation de la compression Gzip dans Nginx :

gzip on;                 #决定是否开启gzip模块,on表示开启,off表示关闭;
gzip_min_length 1k;      #设置允许压缩的页面最小字节(从header头的Content-Length中获取) ,当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。建议大于1k
gzip_buffers 4 16k;      #设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k。这里设置以16k为单位,按照原始数据大小以16k为单位的4倍申请内存
gzip_http_version 1.1;   #识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
gzip_comp_level 2;       #设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大;等级1-9,最小的压缩最快 但是消耗cpu
gzip_types text/plain application/x-javascript text/css application/xml;    #设置需要压缩的MIME类型,非设置值不进行压缩,即匹配压缩类型
gzip_vary on;            #启用应答头"Vary: Accept-Encoding"

gzip_proxied off;
nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),
no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含
  "Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)

gzip_disable msie6;
(IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库

######################################################################################################
#如下:修改nginx配置文件 /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf        #将以下配置放到nginx.conf的http{ ... }区域中

#修改配置为
gzip on;                     #开启gzip压缩功能
gzip_min_length 10k;         #设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小.
gzip_buffers 4 16k;          #设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存
gzip_http_version 1.1;       #压缩版本
gzip_comp_level 2;           #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6
gzip types text/css text/xml application/javascript;      #制定压缩的类型,线上配置时尽可能配置多的压缩类型!
gzip_disable "MSIE [1-6]\.";       #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip vary on;    #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩

Voici la configuration de compression Gzip couramment utilisée en ligne

[root@external-lb02 ~]# cat /data/nginx/conf/nginx.conf
........
http {
.......
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 9;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
    gzip_disable "MSIE [1-6]\.";
    gzip_vary on;

}

Si la fonction de compression Gzip n'est pas activée (c'est-à-dire, commentez la configuration associée à Gzip), vérifiez la taille d'une certaine image

[root@external-lb02 ~]#  ll  -h /data/web//www/test.bmp
-rw-r--r-- 1 root root 453K 3月  14 18:43 /data/web//www/test.bmp

Comme indiqué ci-dessous, le fichier n'est pas compressé et la taille du transfert de fichier est toujours supérieure à 400K

#🎜🎜 #

Comment configurer la compression Gzip pour loptimisation des performances Nginx

Si vous activez la fonction de compression Gzip de Nginx (c'est-à-dire activez la configuration appropriée de Gzip), puis accédez à nouveau à l'image test.bmp, vous constaterez que la taille de transfert du fichier image compressé n'est que supérieure à 200 Ko !

Comment configurer la compression Gzip pour loptimisation des performances Nginx

Grâce à la comparaison de tests ci-dessus, nous avons constaté qu'après que Nginx ait activé la fonction de compression Gzip, la taille du fichier de type gzip défini est nettement plus petite lors de la transmission, ce qui améliorera considérablement les performances d'accès à nginx

# 🎜🎜# Utilisez directement curl pour tester la commande :

[root@fvtlb02 ~]# curl -I -H "Accept-Encoding: gzip, deflate" "http://fvtvfc-web.kevin.com/service-worker.js"
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Mon, 26 Nov 2018 02:19:16 GMT
Content-Type: application/javascript; charset=utf-8
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Sun, 25 Nov 2018 22:28:15 GMT
Vary: Accept-Encoding
ETag: W/"5bfb21ff-40be"
Content-Encoding: gzip

Comme ci-dessus, si "Conten_Encoding: gzip" apparaît dans l'en-tête de réponse, cela signifie que Nginx a activé la compression (accès dans le navigateur, vérifiez la requête par F12 Il en va de même pour les en-têtes de réponse)

Bien que la fonction de compression Gzip de Nginx est facile à utiliser, il n'est pas recommandé d'activer cette fonction de compression pour les deux types de ressources de fichiers suivants.

1) Ressources de type image (et fichiers vidéo)

Raison : Les images telles que les fichiers jpg et png elles-mêmes seront compressées, donc même après avoir activé gzip , il n'y a pas beaucoup de différence de taille avant et après compression, donc l'activer gaspillera des ressources. (Vous pouvez essayer de compresser une image jpg en zip et constater que la taille ne change pas beaucoup. Bien que les algorithmes zip et gzip soient différents, on peut voir que l'intérêt de la compression de l'image n'est pas génial) # 🎜🎜## 🎜🎜#2) Ressources de fichiers volumineusesRaison : Cela consommera beaucoup de ressources CPU et peut ne pas avoir d'effets évidents.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer