Heim >Betrieb und Instandhaltung >Nginx >Konfiguration des Nginx-Proxy-Cache-Updates, um in Echtzeit auf Änderungen im Website-Inhalt zu reagieren

Konfiguration des Nginx-Proxy-Cache-Updates, um in Echtzeit auf Änderungen im Website-Inhalt zu reagieren

王林
王林Original
2023-07-07 08:06:091730Durchsuche

Konfiguration des Nginx-Proxy-Cache-Updates, Echtzeitreaktion auf Änderungen des Website-Inhalts

Einführung:
Mit der zunehmenden Anzahl von Website-Besuchen ist die Verbesserung der Website-Leistung zu einem wichtigen Thema geworden. Nginx ist ein leistungsstarker HTTP-Server und Reverse-Proxy-Server, und Proxy-Caching ist ein wichtiger Bestandteil davon. Im täglichen Betrieb und bei der Wartung ist es häufig erforderlich, den Inhalt der Website zu aktualisieren und zu ändern und gleichzeitig die Reaktionsgeschwindigkeit beim Zugriff der Benutzer aufrechtzuerhalten. In diesem Artikel erfahren Sie, wie Sie das Proxy-Caching in Nginx konfigurieren und es in die Lage versetzen, in Echtzeit auf Änderungen im Website-Inhalt zu reagieren.

  1. Nginx-Proxy-Cache konfigurieren
    In der Nginx-Konfigurationsdatei müssen wir die folgende Konfiguration hinzufügen, um Proxy-Caching zu aktivieren:

    http {
      proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m;
    
      server {
     listen       80;
     server_name  example.com;
    
     location / {
       proxy_pass        http://backend_server;
       proxy_cache       my_cache;
       proxy_cache_key   $scheme$host$request_uri;
       proxy_cache_valid 200 304 12h;
       proxy_cache_use_stale updating;
       proxy_ignore_headers Cache-Control;
     }
      }
    }

    In der obigen Konfiguration gibt proxy_cache_path den Speicherpfad des Caches an Datei und zugehörige Parameter. levels=1:2 stellt die Tiefe des Cache-Pfads dar, keys_zone ist der Cache-Name und die Größenbeschränkung, max_size ist die maximale Größe des Cache, inactive ist die inaktive Zeit des Caches. proxy_cache_path指定了缓存文件的存储路径和相关参数。levels=1:2表示缓存路径的层次深度,keys_zone为缓存名称和大小限制,max_size为缓存的最大大小,inactive为缓存的不活跃时间。

在server段中的location部分,proxy_pass指定了后端服务的地址,proxy_cache指定了使用的缓存名称,proxy_cache_key定义了缓存的键值,proxy_cache_valid设定了响应码为200和304的请求的有效期,proxy_cache_use_stale指定了当更新缓存时是否使用旧的缓存内容,proxy_ignore_headers设置了忽略的HTTP头。

  1. 使用Nginx的proxy_cache_bypass指令实时更新缓存
    Nginx提供了proxy_cache_bypass指令,可以用于实时更新缓存。我们可以在后端服务响应时,通过设置相应的HTTP头来触发缓存更新。以下是一个示例:

    import requests
    
    def update_cache(url):
     headers = {
         'X-Cache-Bypass': '1',
     }
     response = requests.get(url, headers=headers)
     return response.text

    在上述示例代码中,通过设置X-Cache-Bypass头为1,我们可以告诉Nginx在代理缓存中绕过缓存,从而实时获取最新的内容。

  2. 自动触发缓存更新
    除了手动触发缓存更新,我们还可以通过使用定时任务或者Webhook来自动触发缓存的更新。以下是一个使用Python的Web框架Flask和Celery的示例代码:

    from flask import Flask, request
    from celery import Celery
    
    app = Flask(__name__)
    celery = Celery(app.name, broker='redis://localhost:6379/0')
    
    @app.route('/update_cache', methods=['POST'])
    def update_cache():
     url = request.form.get('url')
     result = celery.send_task('tasks.update_cache', args=[url])
     return 'Task submitted'
    
    @celery.task
    def update_cache(url):
     headers = {
         'X-Cache-Bypass': '1',
     }
     response = requests.get(url, headers=headers)
     return response.text
    
    if __name__ == '__main__':
     app.run()

    上述示例中,我们使用Flask创建了一个简单的接口/update_cache

Im Standortteil des Serversegments gibt proxy_pass die Adresse des Backend-Dienstes an, proxy_cache gibt den verwendeten Cache-Namen an, proxy_cache_key Definiert den Cache-Schlüsselwert, proxy_cache_valid legt den Gültigkeitszeitraum von Anfragen mit den Antwortcodes 200 und 304 fest, proxy_cache_use_stale gibt an, ob beim Aktualisieren des Caches der alte Cache-Inhalt verwendet werden soll, proxy_ignore_headers legt ignorierte HTTP-Header fest.


    Verwenden Sie die Nginx-Anweisung „proxy_cache_bypass“, um den Cache in Echtzeit zu aktualisieren.

    Nginx stellt die Anweisung proxy_cache_bypass bereit, mit der Sie den Cache in Echtzeit aktualisieren können. Wir können Cache-Updates auslösen, indem wir den entsprechenden HTTP-Header setzen, wenn der Backend-Dienst antwortet. Hier ist ein Beispiel:

    rrreee🎜Im obigen Beispielcode können wir Nginx anweisen, den Cache im Proxy-Cache zu umgehen, indem wir den Header X-Cache-Bypass auf 1 setzen und so die neueste Version erhalten Inhalte in Echtzeit. 🎜🎜🎜🎜Cache-Updates automatisch auslösen🎜Zusätzlich zum manuellen Auslösen von Cache-Updates können wir Cache-Updates auch automatisch auslösen, indem wir geplante Aufgaben oder Webhooks verwenden. Das Folgende ist ein Beispielcode unter Verwendung des Python-Webframeworks Flask and Celery: 🎜rrreee🎜Im obigen Beispiel haben wir Flask verwendet, um eine einfache Schnittstelle /update_cache zu erstellen, um Cache-Aktualisierungen über POST-Anfragen auszulösen. Nach Erhalt der Anfrage verwenden wir Celery, um die Cache-Aktualisierungsaufgabe asynchron auszuführen und die entsprechenden Ergebnisse zurückzugeben. 🎜🎜🎜🎜Fazit: 🎜Durch die obige Konfiguration und den Beispielcode können wir Proxy-Caching in Nginx konfigurieren und in Echtzeit auf Änderungen im Website-Inhalt reagieren. Dies verbessert die Leistung der Website und ermöglicht gleichzeitig schnelle Aktualisierungen und Änderungen am Website-Inhalt. 🎜🎜Natürlich müssen in tatsächlichen Anwendungen möglicherweise auch Faktoren wie Cache-Invalidierungsstrategie, Hochverfügbarkeit und Sicherheit berücksichtigt werden. Bei der detaillierten Konfiguration müssen Anpassungen entsprechend den tatsächlichen Bedürfnissen vorgenommen werden. Ich hoffe, dass dieser Artikel hilfreich ist, um die Konfiguration der Nginx-Proxy-Cache-Aktualisierung zu lernen und zu verstehen. 🎜

Das obige ist der detaillierte Inhalt vonKonfiguration des Nginx-Proxy-Cache-Updates, um in Echtzeit auf Änderungen im Website-Inhalt zu reagieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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