Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Konfiguration des FastCGI-Cache in Nginx

Einführung in die Konfiguration des FastCGI-Cache in Nginx

不言
不言Original
2018-08-07 13:58:402614Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die Konfiguration des Fastcgi-Cache in Nginx. Ich hoffe, dass er für Freunde hilfreich ist.

Caching-Mechanismus

Nginx bietet zwei Caching-Methoden basierend auf Proxy (Proxy) und basierend auf Fastcgi. Die Befehlssätze der beiden sind jedoch sehr ähnlich Es gibt keine großen Unterschiede in der Verwendung. Da dieser Blog die Nginx + PHP-FPM-Architektur verwendet, verwendet er Fastcgi-basierten Cache, also Fastcgi-Cache.

Konfiguration

Der Mechanismus des Fastcgi-Cache besteht darin, die vom Back-End-CGI-Dienst zurückgegebene Seite zwischenzuspeichern. Wenn nachfolgende Anforderungen eingehen, wird die Seite direkt zurückgegeben. Dadurch entfällt die Notwendigkeit, mit dem Back-End-Dienst zu kommunizieren und Seiten zu generieren. Das Prinzip des Fastcgi-Cache ähnelt dem von Squid, Lack, CDN usw. Aufgrund der Reduzierung der Back-End-Anfragen ist die Leistung im Prinzip viel höher als bei verschiedenen WordPress-Cache-Plug-Ins.

Der Fastcgi-Cache gehört zum Fastcgi-Modul und das Fastcgi-Modul zum http-Modul. Daher sollten Cache-bezogene Konfigurationen in diesen beiden und untergeordneten Konfigurationsblöcken (hauptsächlich http, Server und Standort) erscheinen.

Laut der offiziellen Dokumentation lautet die von der Blog-Site verwendete Cache-Konfiguration wie folgt:

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

Die obige Konfiguration bewirkt Folgendes:

  1. Cache-Pool-Informationen festlegen (fastcgi_cache_path);

  2. Cache-Schlüssel festlegen (fastcgi_cache_key); >Cache-Strategie (fastcgi_cache_bypass/fastcgi_no_cache)

  3. Cache-Zeit wenn die Backend-Anfrage erfolgreich ist (fastcgi_cache_valid)

  4. Debug-Informationsheader hinzugefügt (add_header)

  5. Starten Sie Nginx neu und besuchen Sie dann die Seite, um dies zu überprüfen den Header-Status und die Antwortzeit der Seite. Es ist ersichtlich, dass nach einer Anforderung (die Anzahl kann über

    festgelegt werden) nachfolgende Anforderungen aus dem Cache gestellt werden (X-Cache-Wert ist HIT) und die Geschwindigkeitsverbesserung sehr offensichtlich ist. Für die Admin-Backend-Seite ist der Wert von
  6. , was genau das ist, was wir brauchen.

    Empfohlene verwandte Artikel:

Bedienungsschritte der Nginx-Konfigurationsdatei nginx.conffastcgi_cache_min_usesx-cacheBYPASS

Erklärung der pseudostatischen Regel „Rewrite“ in Nginx (Detaillierte)

Das obige ist der detaillierte Inhalt vonEinführung in die Konfiguration des FastCGI-Cache in Nginx. 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