Maison  >  Article  >  développement back-end  >  Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

不言
不言original
2018-08-06 11:36:562875parcourir

Cet article vous présente Nginx en tant que service Web de ressources statiques et compression de ressources statiques. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

1. Service Web de ressources statiques

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

1. Type de ressource statique

类型 文件类型
浏览器端渲染 HTML、CSS、JS
图片 JEPG、GIF、PNG
视频 FLV、MPEG
文件 TXT等其他下载文件

2. Scénario de service de ressources statiques-CDN

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

2. Configuration du noyau de ressources statiques

1. Lecture de fichiers sendfile

sendfile est un mode efficace pour transférer des fichiers
Sendfile est activé pour indiquer un démarrage efficace. Le mode de transfert de fichiers. sendfile permet à Nginx de transférer des données directement entre le disque et le socket TCP lors du transfert de fichiers. Si ce paramètre n'est pas activé, il s'appliquera d'abord à un tampon dans l'espace utilisateur (espace de processus Nginx), utilisera la fonction read pour lire les données du disque vers le cache, puis lira le tampon dans l'espace utilisateur depuis le cache, puis utilisez la fonction d'écriture pour lire les données de l'espace utilisateur. Le tampon d'espace est écrit dans le tampon du noyau et enfin dans le socket TCP. Après avoir activé ce paramètre, les données n'ont pas besoin de passer par le tampon utilisateur.

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

Grammaire

Syntax:        sendfile on | off;
Default:    sendfile off;
Context:    http, server, location, if in location

2. tcp_nopush

Lorsque sendfile est activé, améliorez l'efficacité de la transmission des paquets de données réseau.
La commande tcp_nopush active TCP_CORK sous Linux lors de la connexion à un socket. Cette option indique à la pile TCP d'ajouter des paquets et de les envoyer lorsqu'ils sont pleins ou lorsque l'application indique d'envoyer des paquets en supprimant explicitement TCP_CORK. Cela permet d'envoyer une quantité optimale de paquets de données et augmente donc l'efficacité de la transmission des paquets réseau.
C'est-à-dire que lorsque tcp_nopush=on, le résultat est que le paquet de données ne sera pas transmis immédiatement. Lorsque le paquet de données est le plus volumineux, il sera transmis en même temps, cela aidera à résoudre la congestion du réseau. il y aura un léger retard.

Syntaxe

Syntax:        tcp_nopush on | off;
Default:    tcp_nopush off;
Context:    http, server, location

3. tcp_nodelay

Sous connexion keepalive, améliorez la transmission en temps réel des données réseau paquets.
L'option tcp_nodelay est exactement le contraire de tcp_nopush. Les paquets de données sont envoyés à l'utilisateur en temps réel sans attente.

Syntaxe

Syntax:        tcp_nodelay on | off;
Default:    tcp_nodelay off;
Context:    server, location

4. Compression

Activez la compression pour accélérer la réponse des ressources et économiser les ressources de bande passante du réseau. .

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

ngx_http_gzip_module

Syntaxe

Activer la compression et désactivé

Syntax:        gzip on | off;
Default:    gzip off;
Context:    http, server, location, if in location

Configuration du niveau de compression (plus le niveau de compression est élevé, plus les ressources du serveur sont consommées)

Syntax:    gzip_comp_level level;
Default:    gzip_comp_level 1;
Context:    http, server, location

Configuration de la version du protocole gzip

Syntax:    gzip_http_version 1.0 | 1.1;
Default:    gzip_http_version 1.1;
Context:    http, server, location

Module d'extension de compression

Fonction gzip pré-lue ngx_http_gzip_static_module

Syntax:    gzip_static on | off | always;
Default:    gzip_static off;
Context:    http, server, location

L'application prend en charge la méthode de compression gunzip ngx_http_gunzip_module

Syntax:    gunzip on | off;
Default:    gunzip off;
Context:    http, server, location

Syntax:    gunzip_buffers number size;
Default:    gunzip_buffers 32 4k|16 8k;
Context:    http, server, location

3. Exemple de compression de ressources statiques

1. vim /etc/nginx/conf.d/static.conf

server {
    #开启sendfile,提高网络包的传输效率
    sendfile on;

    #配置txt|xml资源的路径
    location ~ .*\.(txt|xml)$ {
        #开启压缩
        gzip on;
        gzip_http_version 1.1;
        gzip_comp_level 1;
        gzip_types text/plain application/xml;
        root /vagrant/doc;
    }
}

2. nginx -s reload Rechargez le fichier de configuration nginx

3 Créez le fichier /vagrant/doc/a.txt et vérifiez la taille du fichier

.
[root/etc/nginx]# curl http://www.sina.com.cn/ > /vagrant/doc/a.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  557k  100  557k    0     0   488k      0  0:00:01  0:00:01 --:--:--  488k

[root/etc/nginx]# ll /vagrant/doc/a.txt
-rwxrwxrwx 1 vagrant vagrant 558K 7月  11 10:57 /vagrant/doc/a.txt*

On peut voir que la taille du fichier a.txt est de 558 Ko

4 Accédez à 192.168.33.88/a.txt via curl et affichez les informations d'en-tête de réponse http.

[root/etc/nginx]# curl -I 192.168.33.88/a.txt -H Accept-Encoding:gzip,defalte
HTTP/1.1 200 OK
Server: nginx/1.14.0
Date: Wed, 11 Jul 2018 11:01:43 GMT
Content-Type: text/plain
Last-Modified: Wed, 11 Jul 2018 10:57:22 GMT
Connection: keep-alive
ETag: W/"5b45e292-8b47f"
Content-Encoding: gzip

D'après la réponse, il ressort des informations d'en-tête que le serveur utilise la compression gzip

5 Accédez à 192.168.33.88/a.txt via le navigateur et utilisez-le. les outils de développement pour vérifier la taille du fichier demandé

Nginx sert de service Web de ressources statiques et effectue une compression des ressources statiques

On constate qu'après compression gzip, le fichier demandé est compressé à partir de 558K à 148K, et le taux de compression est très élevé.

6. De plus, vous pouvez également vérifier la taille du fichier transféré via le journal nginx access.log

[root/etc/nginx]# tail /var/log/nginx/access.log
192.168.33.1 - - [11/Jul/2018:11:02:46 +0000] "GET /a.txt HTTP/1.1" 200 151549 "-" "Chrome/67.0.3396.99" "-"

On peut voir que le fichier transféré la taille du fichier est 151549, l'unité est B , convertie en Ko, elle fait environ 148 Ko.

Recommandations associées :

Erreur de démarrage nginx nginx proxy inverse nginx qu'est-ce que nginx lourd

Nginx install lua-nginx - module module

Créer des scripts nginx sous Linux -start, stop, reload..., tutoriel nginx-start_PHP

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn