Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwenden Sie Nginx zur Cache-Steuerung von HTTP-Anfragen

So verwenden Sie Nginx zur Cache-Steuerung von HTTP-Anfragen

王林
王林Original
2023-08-02 14:01:121762Durchsuche

So verwenden Sie Nginx zur Cache-Steuerung von HTTP-Anfragen

Die Cache-Steuerung von HTTP-Anfragen ist ein wichtiges Mittel zur Optimierung der Website-Leistung. Sie kann die Anzahl der vom Server verarbeiteten Anfragen reduzieren und die Antwortgeschwindigkeit der Website verbessern. Als leistungsstarker Webserver und Reverse-Proxy-Server bietet Nginx flexible Cache-Steuerungsfunktionen. In diesem Artikel wird die Verwendung von Nginx für die Cache-Steuerung von HTTP-Anfragen vorgestellt.

1. Proxy-Cache verwenden

Nginx bietet die Proxy-Cache-Funktion, die die Antwortergebnisse vom Upstream-Server zwischenspeichern und die Anzahl der Anfragen an den Upstream-Server reduzieren kann. Um Proxy-Caching zu verwenden, können Sie der Nginx-Konfigurationsdatei die folgende Konfiguration hinzufügen:

http {
  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;

  server {
    ...
    location / {
      proxy_cache my_cache;
      proxy_cache_key $host$uri$is_args$args;
      proxy_cache_valid 200 302 10m;
      proxy_cache_valid 404 1m;
      proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
      proxy_ignore_headers Cache-Control;
      proxy_ignore_headers Set-Cookie;
      proxy_hide_header Set-Cookie;
      proxy_pass http://upstream_server;
    }
    ...
  }
}

In der obigen Konfiguration wird proxy_cache_path verwendet, um den Cache-Pfad und zugehörige Parameter festzulegen. levels=1:2 bedeutet das Erstellen eines Verzeichnisses der Ebene 1 und eines Verzeichnisses der Ebene 2 im Cache-Pfad, um die Effizienz zu verbessern. Mit keys_zone werden der Name und die Speichergröße des Cache-Bereichs festgelegt, die je nach tatsächlichem Bedarf angepasst werden können. max_size gibt die maximale Kapazität des Cache-Bereichs an und inactive gibt die Ablaufzeit des Caches an, d. h. Caches, auf die innerhalb von 60 Minuten nicht zugegriffen wurde, werden gelöscht. use_temp_path=off bedeutet, den temporären Pfad zu deaktivieren, was die Leistung verbessern kann. proxy_cache_path用于设置缓存的路径和相关参数。levels=1:2表示在缓存路径中创建1级目录和2级目录,以提高效率。keys_zone用于设置缓存区的名称和内存大小,可以根据实际需要进行调整。max_size表示缓存区的最大容量,inactive表示缓存的过期时间,即60分钟内没有被访问的缓存将被删除。use_temp_path=off表示禁用临时路径,可以提高性能。

在具体的服务器配置中,通过location指令指定需要进行缓存的URL。proxy_cache指令表示启用缓存,proxy_cache_key指令指定缓存的键值,可以使用多个变量拼接成缓存键值。proxy_cache_valid指定了不同HTTP状态码的缓存有效期,如200和302状态码的响应结果在10分钟内有效,404状态码的响应结果在1分钟内有效。proxy_cache_use_stale用于指定当上游服务器出现错误、超时或更新时,是否使用过期的缓存。proxy_ignore_headersproxy_hide_header指令可用于忽略或隐藏响应头中的某些属性。

在配置完成后,重启Nginx服务使配置生效。此时,Nginx将会对匹配的URL进行缓存,相同的URL再次被请求时,将会直接从缓存中获取响应结果,而不需要再次请求上游服务器。

二、使用浏览器缓存

除了代理缓存,还可以使用浏览器缓存来减少网络请求。Nginx可以通过设置响应头中的Cache-ControlExpires来控制浏览器缓存的行为。

示例如下:

http {
  ...
  server {
    ...
    location /static/ {
      expires max;
      add_header Cache-Control public;
    }
    ...
  }
}

上述配置中,expires指令设置了max,表示将响应结果的过期时间设置为最大值,即永不过期。add_header指令为响应结果添加了Cache-Control头,并设置为public,表示允许公共缓存。

在具体的URL匹配规则中,可以根据不同的需求设置不同的缓存策略。比如,静态资源通常不会经常发生改变,可以设置expires为较长的时间,让浏览器缓存资源;而动态生成的页面可以设置为不缓存或缓存时间较短。

三、使用条件缓存

条件缓存是一种在客户端和服务器之间进行通信的机制,可以根据请求的条件决定是否使用缓存。Nginx通过设置响应头中的Last-ModifiedETag,以及请求头中的If-Modified-SinceIf-None-Match来实现条件缓存。

示例如下:

http {
  ...
  server {
    ...
    location / {
      if_modified_since before;
      add_header ETag "123456";
      if_none_match $http_if_none_match;
      if_modified_since off;
      ...
    }
    ...
  }
}

上述配置中,if_modified_since指令用于判断请求头中的If-Modified-Since是否早于服务器设置的Last-Modifiedadd_header指令添加了ETag头,用于标识资源的唯一性;if_none_match指令用于判断请求头中的If-None-Match是否与服务器设置的ETag相匹配;if_modified_sinceif_none_match指令分别对应了If-Modified-SinceIf-None-Match请求头的值。

通过配置条件缓存,可以在客户端发送请求时,根据服务器返回的Last-ModifiedETag判断是否使用缓存。如果资源没有发生变化,服务器可以返回304 Not Modified,客户端从缓存中获取资源;如果资源已经发生变化,服务器返回新的资源。

四、缓存策略

为了更好地控制缓存的行为,可以根据不同的URL设置不同的缓存策略。通常,静态资源的URL具有稳定的特点,可以设置较长时间的缓存失效期;而动态页面的URL可能会频繁变动,可以设置较短的缓存失效期。

示例如下:

http {
  ...
  server {
    ...
    location /static/ {
      expires 7d;
      add_header Cache-Control public;
    }

    location /dynamic/ {
      expires 1h;
      add_header Cache-Control no-cache;
    }
    ...
  }
}

上述配置中,以/static/开头的URL匹配静态资源,设置了过期时间为7天,允许公共缓存;以/dynamic/

Geben Sie in der spezifischen Serverkonfiguration die URL an, die über die Direktive location zwischengespeichert werden soll. Die proxy_cache-Direktive gibt an, dass das Caching aktiviert ist, und die proxy_cache_key-Direktive gibt den Cache-Schlüsselwert an. Zum Zusammenfügen des Cache-Schlüsselwerts können mehrere Variablen verwendet werden. proxy_cache_valid gibt den Cache-Gültigkeitszeitraum verschiedener HTTP-Statuscodes an. Beispielsweise sind die Antwortergebnisse der Statuscodes 200 und 302 innerhalb von 10 Minuten gültig, und die Antwortergebnisse der Statuscodes 404 sind innerhalb von 1 Minute gültig . proxy_cache_use_stale wird verwendet, um anzugeben, ob ein abgelaufener Cache verwendet werden soll, wenn ein Fehler, eine Zeitüberschreitung oder eine Aktualisierung auf dem Upstream-Server auftritt. Die Anweisungen proxy_ignore_headers und proxy_hide_header können verwendet werden, um bestimmte Attribute in Antwortheadern zu ignorieren oder auszublenden.

Nachdem die Konfiguration abgeschlossen ist, starten Sie den Nginx-Dienst neu, damit die Konfiguration wirksam wird. Zu diesem Zeitpunkt speichert Nginx die passende URL im Cache. Wenn dieselbe URL erneut angefordert wird, wird das Antwortergebnis direkt aus dem Cache abgerufen, ohne den Upstream-Server erneut anzufordern.

2. Verwenden Sie Browser-Caching🎜🎜Zusätzlich zum Proxy-Caching können Sie auch Browser-Caching verwenden, um Netzwerkanfragen zu reduzieren. Nginx kann das Browser-Cache-Verhalten steuern, indem es im Antwortheader Cache-Control und Expires festlegt. 🎜🎜Ein Beispiel ist wie folgt: 🎜rrreee🎜In der obigen Konfiguration legt die expires-Direktive max fest, was bedeutet, dass die Ablaufzeit des Antwortergebnisses auf festgelegt wird Maximalwert, d. h. es läuft nie ab. Die add_header-Direktive fügt den Cache-Control-Header zum Antwortergebnis hinzu und setzt ihn auf public, was angibt, dass öffentliches Caching zulässig ist. 🎜🎜In bestimmten URL-Abgleichsregeln können je nach Bedarf unterschiedliche Caching-Strategien festgelegt werden. Statische Ressourcen ändern sich beispielsweise normalerweise nicht häufig, daher können Sie expires auf eine längere Zeit einstellen, damit der Browser die Ressourcen zwischenspeichern kann, während dynamisch generierte Seiten so eingestellt werden können, dass sie nicht zwischengespeichert werden oder eine haben kürzere Cache-Zeit. 🎜🎜3. Bedingtes Caching verwenden 🎜🎜Bedingtes Caching ist ein Mechanismus für die Kommunikation zwischen dem Client und dem Server, der basierend auf den Bedingungen der Anfrage entscheiden kann, ob Caching verwendet werden soll. Nginx setzt Last-Modified und ETag im Antwortheader sowie If-Modified-Since und If-None-Match code> um bedingtes Caching zu implementieren. 🎜🎜Ein Beispiel ist wie folgt: 🎜rrreee🎜In der obigen Konfiguration wird die Anweisung <code>if_modified_since verwendet, um zu bestimmen, ob der If-Modified-Since im Anforderungsheader früher liegt als der Last set by the server -Modified; Die add_header-Direktive fügt den ETag-Header hinzu, um die Einzigartigkeit der Ressource zu identifizieren; Die if_none_match-Direktive wird verwendet, um den Anforderungsheader zu bestimmen. Ob der If-None-Match mit dem vom Server festgelegten if_modified_since übereinstimmt >- und if_none_match-Anweisungen entsprechen jeweils. Die Werte der Anforderungsheader If-Modified-Since und If-None-Match werden geändert. 🎜🎜Durch die Konfiguration des bedingten Cachings kann beim Senden einer Anfrage durch den Client anhand des vom Server zurückgegebenen Last-Modified und ETag beurteilt werden, ob der Cache verwendet werden soll. Wenn sich die Ressource nicht geändert hat, kann der Server 304 Not Modified zurückgeben und der Client ruft die Ressource aus dem Cache ab. Wenn sich die Ressource geändert hat, gibt der Server die neue Ressource zurück. 🎜🎜4. Cache-Strategie 🎜🎜Um das Caching-Verhalten besser zu steuern, können Sie je nach URL unterschiedliche Caching-Strategien festlegen. Im Allgemeinen ist die URL statischer Ressourcen stabil und es kann ein längerer Cache-Ablaufzeitraum festgelegt werden, während sich die URL dynamischer Seiten häufig ändern kann und ein kürzerer Cache-Ablaufzeitraum festgelegt werden kann. 🎜🎜Ein Beispiel ist wie folgt: 🎜rrreee🎜In der obigen Konfiguration stimmen URLs, die mit /static/ beginnen, mit statischen Ressourcen überein, legen die Ablaufzeit auf 7 Tage fest und erlauben öffentliches Caching; code>/dynamic/ beginnen, stimmen mit dynamischen Ressourcen überein, legen die Ablaufzeit auf 1 Stunde fest und deaktivieren das Caching. 🎜🎜Mit vernünftigen Caching-Strategien können Sie die Website-Leistung verbessern und gleichzeitig sicherstellen, dass Benutzer die neuesten Ressourcen erhalten. 🎜🎜Zusammenfassung🎜

Die Verwendung von Nginx zur Cache-Steuerung von HTTP-Anfragen ist ein wirksames Mittel zur Optimierung der Website-Leistung. Durch Proxy-Caching, Browser-Caching und bedingtes Caching kann die Anzahl der Anfragen an den Server reduziert und die Antwortgeschwindigkeit der Website verbessert werden. In der spezifischen Caching-Strategie müssen je nach URL unterschiedliche Cache-Ablaufzeiten festgelegt werden, um eine bessere Benutzererfahrung zu gewährleisten.

Referenz: https://nginx.org/

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Nginx zur Cache-Steuerung von HTTP-Anfragen. 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