Maison  >  Article  >  Opération et maintenance  >  Configuration de la mise à jour du cache proxy Nginx pour répondre aux modifications du contenu du site Web en temps réel

Configuration de la mise à jour du cache proxy Nginx pour répondre aux modifications du contenu du site Web en temps réel

王林
王林original
2023-07-07 08:06:091615parcourir

Configuration de la mise à jour du cache proxy Nginx, réponse en temps réel aux modifications du contenu du site Web

Introduction :
Avec le nombre croissant de visites de sites Web, comment améliorer les performances du site Web est devenu un problème important. Nginx est un serveur HTTP et un serveur proxy inverse hautes performances, et la mise en cache proxy en est une partie importante. Dans l'exploitation et la maintenance quotidiennes, il est souvent nécessaire de mettre à jour et de modifier le contenu du site Web tout en maintenant la vitesse de réponse lorsque les utilisateurs y accèdent. Cet article explique comment configurer la mise en cache proxy dans Nginx et lui permettre de répondre aux modifications du contenu du site Web en temps réel.

  1. Configuration du cache proxy de Nginx
    Dans le fichier de configuration Nginx, nous devons ajouter la configuration suivante pour activer la mise en cache proxy :

    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;
     }
      }
    }

    Dans la configuration ci-dessus, proxy_cache_path spécifie le chemin de stockage du cache fichier et paramètres associés. levels=1:2 représente la profondeur du chemin du cache, keys_zone est le nom du cache et la taille limite, max_size est la taille maximale du cache, inactive est le temps d'inactivité du cache. 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

Dans la partie localisation du segment du serveur, proxy_pass précise l'adresse du service backend, proxy_cache précise le nom du cache utilisé, proxy_cache_key Définit la valeur de la clé de cache, proxy_cache_valid définit la période de validité des requêtes avec les codes de réponse 200 et 304, proxy_cache_use_stale précise s'il faut utiliser l'ancien contenu du cache lors de la mise à jour du cache, proxy_ignore_headers définit les en-têtes HTTP ignorés.


    Utilisez la directive proxy_cache_bypass de Nginx pour mettre à jour le cache en temps réel

    Nginx fournit la directive proxy_cache_bypass, qui peut être utilisée pour mettre à jour le cache en temps réel. Nous pouvons déclencher des mises à jour du cache en définissant l'en-tête HTTP correspondant lorsque le service backend répond. Voici un exemple :

    rrreee🎜Dans l'exemple de code ci-dessus, en définissant l'en-tête X-Cache-Bypass sur 1, nous pouvons dire à Nginx de contourner le cache dans le cache proxy et ainsi d'obtenir la dernière version. contenu en temps réel. 🎜🎜🎜🎜Déclencher automatiquement les mises à jour du cache🎜En plus de déclencher manuellement les mises à jour du cache, nous pouvons également déclencher automatiquement les mises à jour du cache à l'aide de tâches planifiées ou de Webhooks. Voici un exemple de code utilisant le framework Web Flask et Celery de Python : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons utilisé Flask pour créer une interface simple /update_cache pour déclencher des mises à jour du cache via des requêtes POST. Après avoir reçu la demande, nous utilisons Celery pour effectuer de manière asynchrone la tâche de mise à jour du cache et renvoyer les résultats correspondants. 🎜🎜🎜🎜Conclusion : 🎜Grâce à la configuration et à l'exemple de code ci-dessus, nous pouvons configurer la mise en cache proxy dans Nginx et répondre aux modifications du contenu du site Web en temps réel. Cela améliore les performances du site tout en permettant des mises à jour et des modifications rapides du contenu du site. 🎜🎜Bien sûr, dans les applications réelles, des facteurs tels que la stratégie d'invalidation du cache, la haute disponibilité et la sécurité peuvent également devoir être pris en compte. Lors de la configuration détaillée, des ajustements doivent être effectués en fonction des besoins réels. J'espère que cet article sera utile pour apprendre et comprendre la configuration de la mise à jour du cache proxy Nginx. 🎜

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