Maison  >  Article  >  Opération et maintenance  >  Configuration d'actualisation du cache proxy inverse Nginx et mise à jour des ressources statiques du site Web en temps réel

Configuration d'actualisation du cache proxy inverse Nginx et mise à jour des ressources statiques du site Web en temps réel

王林
王林original
2023-07-04 16:00:123383parcourir

Configuration de l'actualisation du cache du proxy inverse Nginx, mise à jour en temps réel des ressources statiques du site Web

Introduction :
Dans le développement Web, les ressources statiques sont une partie indispensable du site Web. Cependant, les ressources statiques fréquemment mises à jour peuvent amener les utilisateurs à voir les anciennes versions lors de l'accès ou à se charger lentement. Un moyen efficace de résoudre ce problème consiste à utiliser la fonction de mise en cache du proxy inverse de Nginx et à la configurer pour mettre à jour les ressources statiques du site Web en temps réel. Cet article expliquera comment réaliser cette fonction via la configuration de Nginx.

  1. Activer le cache proxy inverse :
    Tout d'abord, nous devons activer le cache proxy inverse dans la configuration Nginx. Recherchez le fichier de configuration Nginx (généralement nginx.conf) et ouvrez-le, puis recherchez la section http et ajoutez la configuration suivante :

    http {
      proxy_cache_path /path/to/cache/directory levels=1:2 keys_zone=cache_zone:10m max_size=10g inactive=60m;
      proxy_temp_path /path/to/temporary/directory;
      proxy_cache_key "$scheme$request_method$host$request_uri";
      proxy_ignore_headers "Cache-Control" "Expires";
      proxy_cache_valid any 10m;
      proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
      
      server {
     ...
     location / {
       proxy_cache cache_zone;
       proxy_pass http://backend-server;
     }
     ...
      }
    }

    Instructions :

  2. proxy_cache_path : définissez le chemin du cache du proxy inverse et configurations associées. levels est le niveau du répertoire, keys_zone est le nom et la taille de la zone de cache, max_size définit la taille maximale du cache, inactif Spécifiez le délai d'expiration du cache. proxy_cache_path:设置反向代理缓存路径以及相关配置。levels是目录层级,keys_zone是缓存区域的名称与大小,max_size设置缓存的最大大小,inactive指定缓存超时时间。
  3. proxy_temp_path:设置临时目录路径。
  4. proxy_cache_key:用于生成缓存key的变量,$scheme表示请求协议,$request_method表示请求方法,$host表示请求的主机名,$request_uri表示请求的URI。
  5. proxy_ignore_headers:指定需要忽略的响应头。
  6. proxy_cache_valid:设置缓存的有效时间。
  7. proxy_cache_use_stale:定义在更新缓存时允许使用陈旧缓存的情况。
  8. 实时更新静态资源:
    若要实现实时更新网站的静态资源,我们需要在后台程序或脚本中添加额外的逻辑,以在每次更新静态资源后发出刷新缓存的请求。以下是一个简单的示例:

在后台程序或脚本中,当静态资源被更新后,发出刷新缓存的HTTP请求:

import requests

def refresh_cache():
  url = "http://your-nginx-server/purge-url"
  headers = {"Host": "your-hostname"}
  response = requests.get(url, headers=headers)
  
  if response.status_code == 200:
    print("Cache refreshed successfully!")
  else:
    print("Failed to refresh cache.")

Nginx的配置文件中,配置地址路由与缓存刷新:

location ~ /purge-url {
  internal;
  proxy_cache_purge cache_zone "$scheme$request_method$host$request_uri$is_args$args";
}

说明:

  • location:配置处理刷新缓存请求的路由。
  • internal:表示该路由只能被内部请求访问,外部请求无法访问。
  • proxy_cache_purge:配置要刷新的缓存区域及相关参数。

通过以上配置,当发出带有X-Purge-Cache: 1的GET请求到http://your-nginx-server/purge-url时,Nginx会根据请求的URI刷新对应的缓存。

  1. 验证:
    为了验证配置的正确性,可以使用浏览器、Postman或类似的工具来发出带有X-Purge-Cache: 1
  2. proxy_temp_path : Définissez le chemin du répertoire temporaire.

proxy_cache_key : variable utilisée pour générer la clé de cache, $scheme représente le protocole de requête, $request_method représente la méthode de requête, $host représente le nom d'hôte demandé et $request_uri représente l'URI demandé.

proxy_ignore_headers : spécifiez les en-têtes de réponse qui doivent être ignorés. 🎜🎜proxy_cache_valid : Définissez la durée de validité du cache. 🎜🎜proxy_cache_use_stale : définit les circonstances dans lesquelles le cache obsolète peut être utilisé lors de la mise à jour du cache. 🎜🎜Mettre à jour les ressources statiques en temps réel : 🎜Pour obtenir une mise à jour en temps réel des ressources statiques du site Web, nous devons ajouter une logique supplémentaire dans le programme ou le script en arrière-plan pour émettre une demande de rafraîchissement du cache après chaque mise à jour des ressources statiques. ressources. Voici un exemple simple : 🎜🎜🎜Dans le programme ou le script en arrière-plan, lorsque la ressource statique est mise à jour, émettez une requête HTTP pour actualiser le cache : 🎜rrreee🎜Dans le fichier de configuration Nginx, configurez le routage des adresses et l'actualisation du cache : 🎜 rrreee🎜 Description : 🎜
    🎜location : configurez la route pour gérer les demandes de rafraîchissement du cache. 🎜🎜interne : Indique que l'itinéraire n'est accessible que par les requêtes internes et n'est pas accessible par les requêtes externes. 🎜🎜proxy_cache_purge : configurez la zone de cache à actualiser et les paramètres associés. 🎜
🎜Avec la configuration ci-dessus, lors de l'émission d'une requête GET avec X-Purge-Cache : 1 vers http://your-nginx-server/purge-url code>, Nginx rafraîchira le cache correspondant en fonction de l'URI demandé. 🎜<ol start="3">🎜Vérification : 🎜Pour vérifier l'exactitude de la configuration, vous pouvez utiliser un navigateur, Postman ou un outil similaire pour émettre un GET avec <code>X-Purge-Cache : 1 demander. Si le cache est actualisé avec succès, lors de l'accès à nouveau à la ressource statique correspondante, la dernière version sera obtenue à partir du serveur backend et le cache sera mis à jour pour garantir que l'utilisateur voit la dernière ressource statique. 🎜🎜🎜Conclusion : 🎜Grâce à la configuration du cache proxy inverse de Nginx et à la méthode d'actualisation des ressources statiques en temps réel, nous pouvons améliorer les performances et la vitesse d'accès du site Web, et garantir que les utilisateurs peuvent obtenir les dernières ressources statiques en temps réel. Ceci est particulièrement important pour les sites Web fréquemment mis à jour. Cela peut également réduire la pression sur le serveur principal et améliorer la stabilité et la fiabilité du site Web. J’espère que l’introduction de cet article vous sera utile ! 🎜

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