Maison  >  Article  >  développement back-end  >  Introduction à la configuration du cache fastcgi dans Nginx

Introduction à la configuration du cache fastcgi dans Nginx

不言
不言original
2018-08-07 13:58:402542parcourir

Cet article vous présente la méthode de configuration du cache fastcgi dans Nginx. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Mécanisme de mise en cache

Nginx fournit deux méthodes de mise en cache basées sur un proxy (proxy) et basées sur fastcgi. Les jeux d'instructions des deux sont très similaires, mais. il y a des différences d'utilisation. Étant donné que ce blog adopte l'architecture Nginx+PHP-FPM, il utilise un cache basé sur fastcgi, c'est-à-dire un cache fastcgi.

Configuration

Le mécanisme du cache fastcgi consiste à mettre en cache la page renvoyée par le service CGI back-end Lorsque les requêtes suivantes arrivent, la page sera renvoyée directement, éliminant le besoin de communiquer avec le service back-end et la consommation de génération de pages. Le principe du cache fastcgi est similaire à celui de squid, vernis, CDN, etc. En raison de la réduction des requêtes back-end, les performances seront en principe bien supérieures à celles des divers plug-ins de cache WordPress.

Le cache fastcgi appartient au module fastcgi, et le module fastcgi appartient au module http, donc les configurations liées au cache doivent apparaître dans ces deux blocs de configuration subordonnés (principalement http, serveur et emplacement).

Selon la documentation officielle, la configuration du cache utilisée par le site de blog est la suivante :

http {
  ...
  fastcgi_connect_timeout 30s;
  # 全局设置, fastcgi_cache_path只能出现在http配置块中
  # fastcgi_cache_path设置全局的缓存路径、文件大小等,可多次出现设置不同的缓存池
  fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:10m inactive=10m max_size=500m;
  fastcgi_cache_key $scheme$request_method$host$request_uri;
  # 设置使用过期缓存的情形:后端错误、超时等
  fastcgi_cache_use_stale error timeout invalid_header http_500 http_503;
  ...
  server {
    ...
    # 缓存策略指示变量
    set $skip_cache 0;
    # 缓存策略
    if ($query_string != "") {
      set $skip_cache 1;
    }
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|sitemap(_index)?.xml") {
      set $skip_cache 1;
    }
    # 登录用户或发表评论者
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
      set $skip_cache 1;
    }
    location ~ \.php$ {
      ...
      # 使用的keyzone,这里使用http中定义的WORDPRESS
      fastcgi_cache WORDPRESS;
      # 是否跳过缓存
      fastcgi_cache_bypass $skip_cache;
      fastcgi_no_cache $skip_cache;
      # 后端返回成功的情况下缓存10分钟
      fastcgi_cache_valid 200 10m;
      # 添加header字段,指示缓存命中状态(调试使用)
      add_header X-Cache $upstream_cache_status;
    }
  }
}

La configuration ci-dessus fait ce qui suit :

  1. Définir les informations du pool de cache (fastcgi_cache_path) ;

  2. Définir la clé de cache (fastcgi_cache_key)

  3. Traitement des fichiers expirés (fastcgi_cache_use_stale)

  4. Stratégie de cache (fastcgi_cache_bypass/fastcgi_no_cache)

  5. Durée de cache lorsque la requête backend réussit (fastcgi_cache_valid)

  6. Ajout d'un en-tête d'informations de débogage ( add_header)

Redémarrez Nginx, puis visitez la page pour vérifier l'état de l'en-tête et le temps de réponse de la page. On peut voir qu'après qu'une requête est effectuée (le nombre de fois peut être défini via fastcgi_cache_min_uses), les requêtes suivantes sont effectuées à partir du cache (la valeur X-Cache est HIT) et l'amélioration de la vitesse est très évidente. Pour la page backend d'administration, la valeur de x-cache est BYPASS, ce qui est exactement ce dont nous avons besoin.

Articles connexes recommandés :

Étapes de fonctionnement du fichier de configuration Nginx nginx.conf

Explication de la règle pseudo-statique de réécriture dans Nginx ( Détaillé)

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