Ausführliche Diskussion des Caching-Mechanismus und der Techniken zur Leistungsoptimierung von Nginx

王林
Freigeben: 2023-08-26 21:46:45
Original
914 Leute haben es durchsucht

Ausführliche Diskussion des Caching-Mechanismus und der Techniken zur Leistungsoptimierung von Nginx

Erkunden Sie den Caching-Mechanismus und die Leistungsoptimierungstechniken von Nginx eingehend.

Einführung:
In der heutigen Webentwicklung sind hohe Leistung und hohe Parallelität die Ziele, die wir verfolgen. Als Hochleistungs-Webserver sind der Caching-Mechanismus und die Leistungsoptimierungsfähigkeiten von Nginx entscheidend für die Verbesserung der Ladekapazität der Website. Dieser Artikel befasst sich mit dem Caching-Mechanismus und den Leistungsoptimierungstechniken von Nginx und gibt relevante Codebeispiele.

1. Der Caching-Mechanismus von Nginx
Der Caching-Mechanismus von Nginx wird über das Proxy-Cache-Modul implementiert. Es kann die Proxy-Daten lokal zwischenspeichern. Wenn die gleiche Anfrage das nächste Mal eintrifft, werden die Daten direkt aus dem Cache gelesen, ohne dass eine Anfrage an den Back-End-Server gesendet werden muss. Dadurch kann der Druck auf den Back-End-Server erheblich verringert und die Reaktionsgeschwindigkeit der Website verbessert werden.

  1. Caching aktivieren
    Um die Caching-Funktion von Nginx zu aktivieren, müssen Sie zunächst den folgenden Code zur Nginx-Konfigurationsdatei hinzufügen:

    http {
     ...
     proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
     proxy_temp_path /data/nginx/tmp;
     ...
    }
    Nach dem Login kopieren

    In diesem Code definiert proxy_cache_path den Cache-Pfad und einige zugehörige Parameter . Unter diesen stellt der Parameter levels die im Cache-Pfad erstellte Verzeichnisebene dar, der Parameter keys_zone definiert einen gemeinsam genutzten Speicherbereich, der zum Speichern zwischengespeicherter Indizes und zugehöriger Metadaten verwendet wird, max_size definiert die maximale Größe des Caches. Der Parameter inactive gibt an, dass ein Cache, auf den über einen bestimmten Zeitraum nicht zugegriffen wurde, als abgelaufen gilt Der Parameter gibt an, ob Cache-Dateien in einem temporären Pfad platziert werden sollen. proxy_cache_path定义了缓存的路径和一些相关的参数。其中,levels参数表示在缓存路径中创建的目录层级,keys_zone参数定义了一个共享内存区域,用于存储缓存的索引和相关元数据,max_size参数定义了缓存的最大大小,inactive参数表示超过一定时间没有被访问的缓存将被认为是过期的,use_temp_path参数指定是否将缓存文件放在临时路径中。

  2. 配置缓存规则
    要指定哪些请求需要被缓存,可以在Nginx的配置文件中添加以下代码:

    http {
     ...
     location / {
         proxy_pass http://backend;
         proxy_cache my_cache;
         proxy_cache_valid 200 304 1h;
     }
     ...
    }
    Nach dem Login kopieren

    在这段代码中,proxy_pass指令定义了要代理到的后端服务器地址,proxy_cache指定了使用的缓存区域,proxy_cache_valid定义了HTTP状态码200和304被缓存的时间。

  3. 刷新和清理缓存
    为了保证数据的实时性和准确性,我们有时需要手动刷新或清理缓存。可以在Nginx的配置文件中添加以下代码:

    http {
     ...
     location /flush_cache {
         internal;
         proxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
         return 200 "Cache flushed successfully";
     }
     ...
    }
    Nach dem Login kopieren

    在这段代码中,location指定了刷新缓存的URL,internal指令限制了该请求只能被Nginx内部调用,proxy_cache_purge指令用于清理缓存。

二、Nginx的性能调优技巧
除了缓存机制之外,我们还可以通过一些性能调优的技巧来进一步提升Nginx的性能。

  1. 提高Worker进程的并发连接数
    Nginx默认配置的Worker进程数较少,可以通过修改配置文件来提高Worker进程的数量,从而提高并发连接数:

    worker_processes auto;
    events {
     worker_connections 4096;
    }
    Nach dem Login kopieren

    在这段代码中,worker_processes指定了Worker进程的数量,events部分则指定了每个Worker进程的最大并发连接数。

  2. 配置TCP连接和超时参数
    合理配置TCP连接和超时参数可以提高Nginx的性能:

    http {
     ...
     keepalive_timeout 65;
     keepalive_requests 100;
     send_timeout 2m;
     client_header_timeout 1m;
     ...
    }
    Nach dem Login kopieren

    在这段代码中,keepalive_timeout定义了一个客户端连接在没有任何请求的情况下保持活跃的最大时间,keepalive_requests定义了一个客户端连接请求的最大次数,send_timeout定义了向客户端发送响应的最长时间,client_header_timeout定义了接收客户端请求头的最长时间。

  3. 启用Gzip压缩
    启用Gzip压缩可以减小传输的数据量,提高页面加载速度:

    http {
     ...
     gzip on;
     gzip_disable "msie6";
     gzip_types text/plain text/css application/json;
     ...
    }
    Nach dem Login kopieren

    在这段代码中,gzip指令启用了Gzip压缩,gzip_disable指定了不压缩msie6浏览器的请求,gzip_types

Caching-Regeln konfigurieren

Um anzugeben, welche Anfragen zwischengespeichert werden müssen, können Sie den folgenden Code zur Nginx-Konfigurationsdatei hinzufügen:
rrreee

In diesem Code definiert die proxy_pass-Direktive den Proxy Die Back-End-Serveradresse, proxy_cache gibt den verwendeten Cache-Bereich an und proxy_cache_valid definiert den Zeitpunkt, zu dem die HTTP-Statuscodes 200 und 304 zwischengespeichert werden. 🎜🎜🎜🎜Cache aktualisieren und leeren🎜Um die Echtzeit und Genauigkeit der Daten sicherzustellen, müssen wir manchmal den Cache manuell aktualisieren oder leeren. Sie können der Nginx-Konfigurationsdatei den folgenden Code hinzufügen: 🎜rrreee🎜In diesem Code gibt location die URL an, um den Cache zu aktualisieren, und die Anweisung internal beschränkt die Anforderung auf Die von Nginx intern aufgerufene proxy_cache_purge-Direktive wird zum Bereinigen des Caches verwendet. 🎜🎜🎜🎜2. Nginx-Leistungsoptimierungstechniken🎜 Zusätzlich zum Caching-Mechanismus können wir auch einige Leistungsoptimierungstechniken verwenden, um die Leistung von Nginx weiter zu verbessern. 🎜🎜🎜🎜Erhöhen Sie die Anzahl gleichzeitiger Verbindungen des Worker-Prozesses. 🎜Nginx hat standardmäßig eine kleinere Anzahl von Worker-Prozessen konfiguriert. Sie können die Anzahl der Worker-Prozesse erhöhen, indem Sie die Konfigurationsdatei ändern und dadurch die Anzahl gleichzeitiger Verbindungen erhöhen: 🎜 rrreee🎜In diesem Code gibt worker_processes die Anzahl der Worker-Prozesse an, und der Abschnitt events gibt die maximale Anzahl gleichzeitiger Verbindungen für jeden Worker-Prozess an. 🎜🎜🎜🎜Konfigurieren Sie TCP-Verbindungs- und Timeout-Parameter🎜Die ordnungsgemäße Konfiguration von TCP-Verbindungs- und Timeout-Parametern kann die Leistung von Nginx verbessern:🎜rrreee🎜In diesem Code definiert keepalive_timeout eine Client-Verbindung ohne Die maximale Zeit bis im Falle einer Anfrage aktiv bleiben, keepalive_requests definiert die maximale Anzahl von Verbindungsanfragen für einen Client, send_timeout definiert die maximale Zeit zum Senden einer Antwort an den Client, client_header_timeout definiert die maximale Zeit zum Empfangen von Client-Anfrage-Headern. 🎜🎜🎜🎜Gzip-Komprimierung aktivieren🎜Die Aktivierung der Gzip-Komprimierung kann die übertragene Datenmenge reduzieren und die Seitenladegeschwindigkeit verbessern: 🎜rrreee🎜In diesem Code aktiviert die gzip-Direktive die Gzip-Komprimierung, gzip_disable gibt an, dass die Anfrage des <code>msie6-Browsers nicht komprimiert ist, und gzip_types gibt den MIME-Typ an, der eine Gzip-Komprimierung erfordert. 🎜🎜🎜🎜Fazit: 🎜Durch die gründliche Untersuchung des Caching-Mechanismus und der Leistungsoptimierungstechniken von Nginx können wir Nginx besser verstehen und anwenden sowie die Ladekapazität und Benutzererfahrung der Website effektiv verbessern. Durch die richtige Konfiguration des Caching-Mechanismus und der Leistungsparameter sowie die Abstimmung entsprechend der tatsächlichen Situation können wir bessere Ergebnisse bei der Webentwicklung mit hoher Leistung und hoher Parallelität erzielen. Ich hoffe, dass dieser Artikel den Lesern hilfreich sein kann. 🎜

Das obige ist der detaillierte Inhalt vonAusführliche Diskussion des Caching-Mechanismus und der Techniken zur Leistungsoptimierung von Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!