Heim > Betrieb und Instandhaltung > Nginx > So konfigurieren Sie den Nginx-Inhaltscache und welche allgemeinen Parameterkonfigurationen gibt es

So konfigurieren Sie den Nginx-Inhaltscache und welche allgemeinen Parameterkonfigurationen gibt es

WBOY
Freigeben: 2023-05-11 22:25:11
nach vorne
1588 Leute haben es durchsucht

Nutzungsszenario:

Die Projektseite muss viele Daten laden, die sich nicht häufig ändern. Sie erfordert keine personalisierte Anpassung und wird dynamisch generiert Für jede Anforderung ist die Leistung nicht so gut wie das Zwischenspeichern der Ergebnisse basierend auf dem Anforderungsrouting und den Parametern. Die Verwendung des Nginx-Cache erhöht die Anforderungsgeschwindigkeit erheblich.

Basic

Sie müssen nur Proxy_cache_path und Proxy_cache konfigurieren, um das Inhalts-Caching zu aktivieren. Ersteres wird zum Festlegen des Caches verwendet Pfad und Konfiguration, letzteres wird verwendet, um das Caching zu ermöglichen.

http {
 ...
 proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

 server {
 proxy_cache mycache;
 location / {
  proxy_pass http://localhost:8000;
 }
 }
}
Nach dem Login kopieren

Entsprechende Parameterbeschreibung:

1 Das für das Caching verwendete lokale Festplattenverzeichnis ist /path/to/cache/.

2.levels legt ein zweistufiges Hierarchieverzeichnis in /path/to/cache/ fest. Das Platzieren einer großen Anzahl von Dateien in einem einzigen Verzeichnis kann zu einem langsamen Dateizugriff führen. Daher empfehlen wir für die meisten Bereitstellungen eine zweistufige Verzeichnishierarchie. Wenn der Level-Parameter nicht konfiguriert ist, legt Nginx alle Dateien im selben Verzeichnis ab.

3.keys_zone Richten Sie einen gemeinsamen Speicherbereich ein, der zum Speichern von Cache-Schlüsseln und Metadaten verwendet wird, ähnlich wie bei der Verwendung von Timern. Durch das Ablegen einer Kopie des Schlüssels im Speicher kann Nginx schnell entscheiden, ob eine Anfrage ein Treffer oder ein Fehlschlag ist, ohne die Festplatte abzurufen, was die Abrufgeschwindigkeit erheblich verbessert. Ein 1-MB-Speicherplatz kann etwa 8.000 Schlüssel speichern, sodass der oben konfigurierte 10-MB-Speicherplatz fast 80.000 Schlüssel speichern kann.

4.max_size legt die Obergrenze des Caches fest (10g im obigen Beispiel). Dies ist optional; wenn kein Wert angegeben wird, kann der Cache wachsen und den gesamten verfügbaren Speicherplatz verbrauchen. Wenn der Cache diese Grenze erreicht, ruft der Prozessor den Cache-Manager auf, um die zuletzt verwendeten Dateien zu entfernen und so den Cache-Speicherplatz unter diese Grenze zu reduzieren.

5.inactive gibt an, wie lange das Element im Speicher bleiben kann, ohne dass darauf zugegriffen wird. Wenn im obigen Beispiel eine Datei nicht innerhalb von 60 Minuten angefordert wird, löscht die Cache-Verwaltung sie automatisch aus dem Speicher, unabhängig davon, ob die Datei abgelaufen ist. Der Standardwert dieses Parameters beträgt 10 Minuten (10 m). Beachten Sie, dass sich inaktive Inhalte von abgelaufenen Inhalten unterscheiden. nginx löscht abgelaufene Inhalte, die im Cache-Control-Header angegeben sind (cache-control:max-age=120 in diesem Beispiel), nicht automatisch. Abgelaufene Inhalte werden nur gelöscht, wenn nicht innerhalb der durch inaktiv angegebenen Zeit darauf zugegriffen wird. Wenn auf abgelaufene Inhalte zugegriffen wird, aktualisiert Nginx diese vom ursprünglichen Server und aktualisiert den entsprechenden inaktiven Timer.

6.nginx legt die Dateien, die in den Cache geschrieben werden sollen, zunächst in einem temporären Speicherbereich ab. Der Befehl use_temp_path=off weist nginx an, diese Dateien beim Zwischenspeichern in dasselbe Verzeichnis zu schreiben. Wir empfehlen dringend, den Parameter auf „Off“ zu setzen, um unnötige Datenkopien im Dateisystem zu vermeiden. use_temp_path wurde in Nginx Version 1.7 und Nginx Plus R6 eingeführt.

Schließlich beginnt der Befehl „proxy_cache“ mit dem Zwischenspeichern von Inhalten, deren URL mit dem Standortteil (in diesem Fall /) übereinstimmt. Sie können dem Serverabschnitt auch den Befehl „proxy_cache“ hinzufügen, der das Caching auf alle Dienste anwendet, deren Standorte keinen eigenen Befehl „proxy_cache“ angeben.

Nginx-Cache-bezogene Prozesse

Im Cache sind zwei zusätzliche Nginx-Prozesse beteiligt: ​​

#🎜🎜 #
  • Der Cache-Manager wird regelmäßig gestartet, um den Status des Caches zu überprüfen. Wenn die Cache-Größe den durch den Parameter „max_size“ in „proxy_cache_path“ festgelegten Grenzwert überschreitet, löscht der Cache-Manager die zuletzt aufgerufenen Daten. Zwischen den Starts des Cache-Managers kann die Menge der zwischengespeicherten Daten kurzzeitig die konfigurierte Größe überschreiten.

  • Cache Loader wird nur einmal ausgeführt, nachdem Nginx gestartet wurde. Es lädt Metadaten über zuvor zwischengespeicherte Daten in einen gemeinsam genutzten Speicherbereich. Das gleichzeitige Laden des gesamten Caches verbraucht möglicherweise genügend Ressourcen, um die Leistung von Nginx in den ersten Minuten nach dem Start zu beeinträchtigen. Um dies zu vermeiden, konfigurieren Sie das iterative Laden des Caches, indem Sie den folgenden Parameter in die Proxy_cache_path-Direktive aufnehmen:

    • loader_threshold – Iterationsdauer, in Millisekunden in Einheiten ( Standard 200)

    • loader_files – Maximale Anzahl der während einer Iteration geladenen Elemente (Standard 100)

      #🎜 🎜#
    • loader_sleeps - Verzögerung zwischen Iterationen, in Millisekunden (standardmäßig 50) Dauert 300 Millisekunden oder bis 200 Elemente geladen sind:
    • proxy_cache_path /data/nginx/cache keys_zone=one:10m loader_threshold=300 loader_files=200;
      Nach dem Login kopieren

      Andere häufig verwendete Parameter
    #🎜 🎜#
Konfigurationsbeispiel: #🎜 🎜#
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

server {
 ...
 location / {
  proxy_cache my_cache;
  # proxy_cache_key "$host$request_uri$cookie_user";   proxy_cache_min_uses 3;
  proxy_cache_methods get head post;
  proxy_cache_valid 200 302 10m;
  proxy_cache_valid 404  1m;
  # proxy_cache_valid any 5m;   proxy_pass http://localhost:8000;
 }
}
Nach dem Login kopieren

Entsprechende Parameterbeschreibung:


proxy_cache_key gibt den zwischengespeicherten Schlüssel zum Ändern an Bei der Berechnung des Schlüssels verwendete Anforderungsmerkmale werden beispielsweise nicht als Schlüssel verwendet. Dies bedeutet, dass eine Seite n-mal für verschiedene Benutzer zwischengespeichert wird. eine solche Operation ist nicht erforderlich.

proxy_cache_min_uses ist die Mindestanzahl von Anfragen, die denselben Schlüssel verwenden müssen, bevor die Antwort zwischengespeichert wird.

  • proxy_cache_methods 为指定要被缓存的请求方式的响应值,默认为 get 和 head,新增其他的需要一起列出来,如上示例所示。

  • proxy_cache_valid 为响应状态码的缓存时间,示例可以为每个状态码缓存指定时间,也可以使用 any 进行全部状态码的缓存。

  • 清除缓存

    需要提前加一个配置,用于标识使用 http purge 方法的请求并删除匹配的 url 对应的缓存。

    1.在 http {} 上下文中创建新变量,例如 $purge_method, 他依赖于 $request_method 变量:

    http {
     ...
     map $request_method $purge_method {
      purge 1;
      default 0;
     }
    }
    Nach dem Login kopieren

    2.在 location {} 块中,已经配置缓存的前提下,引入 proxy_cache_purge 参数来指定清除缓存请求的条件。例如在上一步指定的 $request_method

    server {
     listen  80;
     server_name www.example.com;
    
     location / {
      proxy_pass https://localhost:8002;
      proxy_cache mycache;
    
      proxy_cache_purge $purge_method;
     }
    }
    Nach dem Login kopieren

    配置完并使之生效之后,就可以发送一条 purge 请求来让缓存失效了,例如:

    curl -x purge -d – https://www.example.com/*
    Nach dem Login kopieren

    在该示例中,将清除具有公共 url 部分(由星号通配符指定)的资源。但这些缓存条目不会从缓存中完全删除:它们会保留在磁盘上,直到它们被视为不活动(由proxy_cache_path 中的 inactive参数决定)的时候才完全删除,或缓存清除器(由 proxy_cache_path 中的 purge 决定),或客户端尝试访问它们的时候。

    Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie den Nginx-Inhaltscache und welche allgemeinen Parameterkonfigurationen gibt es. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    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