So konfigurieren Sie Cache-Control-Header in NGINX

Inhalt

Caching ist das Verfahren zum Speichern heruntergeladener Daten zur späteren Verwendung, wo sie von der Festplatte gelesen werden können, anstatt sie erneut anzufordern. Die richtige Nutzung Ihres Browsers und des CDN-Caching kann Ihr Webportal erheblich beschleunigen.

Wie funktioniert Caching?

Der Browser jedes Benutzers verfügt über einen integrierten Cache, die statische Objekte speichert, die von Websites heruntergeladen wurden. Das nächste Mal, wenn sie sich verbinden, ob sich das angeforderte Objekt noch im Cache befindet, wird aus dem Speicher geladen, anstatt es erneut anzufordern, was die Leistung erheblich beschleunigt und die Belastung Ihres Webservers im Verfahren reduziert.

Der Browser des Benutzers ist ein clientseitiger Cache. Trotz dieses, viele große Websites verwenden auch ein Content Delivery Network oder CDN. Das CDN sitzt vor Ihrem Webserver und zwischenspeichert Ihre Seiten serverseitig, im Allgemeinen auf verschiedenen Edge-Servern auf der ganzen Welt. Dies verbessert die Zugriffslatenz, Leistung und reduziert die Belastung Ihres Webservers erheblich. Weitere Informationen zu CDNs, Sie können unseren Leitfaden hier lesen.

Cache-Control ist ein Header, den Sie Ihren Webserver so konfigurieren können, dass er allen ausgehenden Anfragen hinzugefügt wird. Bei der Verwendung, Sie können angeben, welche Ressourcen wie lange zwischengespeichert werden. Trotz dieses, Es gibt ein paar Dinge, auf die Sie achten müssen, bevor Sie sie der gesamten Site hinzufügen.

Einige Seiten sollten Niemals zwischengespeichert werden. Alles, was eine Anmeldung eines Benutzers erfordert, sollte nicht von einem CDN zwischengespeichert werden, sonst gehst du das risiko ein die persönlichen Daten eines Benutzers anderen zeigen. Sie können diese Art von Seiten immer noch nur auf der Browserseite zwischenspeichern (Einstellung Cache-Control zum private). Generell, wenn die Seite für alle Benutzer genau gleich sein soll, als Ihre Homepage, kann es zwischenspeichern. Statische Ressourcen, wie CSS und Bilder, kann generell zwischengespeichert werden, oft noch viel länger.

Sie sollten auch sicherstellen, dass Sie angemessene Lebensdauerwerte ermitteln. (TTL) für jede Ressource. TTL steuert, wie lange das Objekt im Cache bleibt, bevor es ungültig gemacht wird, Was veranlasst den Benutzer, ein neues Objekt anzufordern. Der Kompromiss besteht hier zwischen einer langen Caching-Zeit und schnellen Updates.. Du möchtest deine Homepage nicht ein ganzes Jahr zwischenspeichern, weil ich am Dienstag etwas ändern könnte. Das Festlegen eines maximalen Alters von wenigen Minuten für Ihre Homepage ist lang genug, um sofortige Neuladungen abzudecken und schnell genug, um eine schnelle Verbreitung von Updates zu ermöglichen.. Trotz dieses, für statische Ressourcen wie Bilder, es ist möglich, dass sie sich nie ändern, und es sollte in Ordnung sein, hohe TTL-Werte einzustellen, sogar so hoch wie zwei Jahre.

Sie können immer versionierte Dateinamen verwenden, um einen Cache-Neuladen auszulösen. Wenn Sie eine neue Version eines CSS-Stylesheets veröffentlichen, du kannst es benennen styles-1.0.1.css, und der Browser des Benutzers (und jedes CDN davor) Sie sehen es als neue Datei, die erneut heruntergeladen werden muss. Zur selben Zeit, für einige CDNs, Sie können manuelle Überschreibungen vornehmen, um den vorhandenen Cache zu leeren, ohne Dateinamen zu ändern.

So verwenden Sie Cache-Control in NGINX

Cache-Control du hast einige möglichkeiten:

  • public – Jeder kann es cachen, einschließlich Browser und CDN. Verwenden Sie dies für die meisten statischen Objekte.
  • private – Enthält sensible Daten, die nicht über CDNs oder Reverse-Proxys zwischengespeichert werden können. Der Browser des Benutzers kann es lokal zwischenspeichern. Verwenden Sie dies für die meisten authentifizierten Seiten.
  • no-cache – Trotz des Namens, Caching nicht deaktivieren. Der Browser kann die Lösung dennoch für die Leistung zwischenspeichern, Sie müssen jedoch den Ursprungsserver nach Updates suchen, bevor Sie ihn verwenden. Verwenden Sie dies, wenn der Benutzer jedes Mal eine erneute Validierung durchführen soll
  • no-store – Caching komplett deaktivieren. Verwenden Sie dies nur für streng vertrauliche Daten, die nicht zweimal übermittelt werden sollten.

Beim Einstellen der max-age, immer in Sekunden erledigt. Trotz dieses, NGINX ermöglicht einige weitere benutzerdefinierte Werte:

  • -1, Ö off, wodurch das Caching deaktiviert und vorhandene Header nicht geändert werden
  • epoch, auf Unix-Zeit null gesetzt, wodurch das Caching explizit deaktiviert und alle Caches gelöscht werden (nützlich, wenn Sie NGINX als Reverse-Proxy verwenden)
  • max, das wird ablaufen, wenn das Universum endet, das 31 von Dezember bis 2037
  • 30s, für Sekunden
  • 1m, pro Minute
  • 24h, stundenlang
  • 3d, für Tage
  • 1M, für Monate
  • 2y, im Laufe der Jahre

Zur selben Zeit, du kannst das hinzufügen no-transform Direktive, wodurch jede Konvertierung deaktiviert wird, die auf der Ressource durchgeführt werden kann. Als Beispiel, einige CDNs komprimieren Bilder, um die Bandbreite zu reduzieren. Diese Anweisung deaktiviert dieses Verhalten.

Para NGINX, Sie können die Cache-Control-Header mit den folgenden Anweisungen ändern:

läuft ab 1und;
add_header Cache-Steuerung "öffentlich, nicht umwandeln";

Die erste Zeile setzt das Höchstalter in 1 Jahr und das zweite etabliert die public und no-transform Caching-Einstellungen. Sie können dies zu a . hinzufügen server sperren, um sich auf die gesamte Website zu bewerben, Eine bessere Methode besteht jedoch darin, die Dateierweiterungen einem Standortblock zuzuordnen, um unterschiedliche Werte basierend auf der Dateierweiterung zu bestimmen:

Lage ~* .(?:CSS|js)$ {
  läuft ab 1und;
  add_header Cache-Kontrolle "öffentlich";
}

Dieser Standortblock verwendet eine Übereinstimmung mit regulären Ausdrücken, bezeichnet mit dem ~. Dies ist nützlich, um allgemeine Einstellungen für den Inhaltstyp anzuwenden. Wenn Sie Ausnahmen für bestimmte Orte machen möchten, Sie können einen normalen Standortblock verwenden, die Vorrang vor einem Regex-Match hat.

Standort /Profil {
    verfällt 2d;
    add_header Cache-Steuerung "öffentlich, nicht umwandeln";
}

Sie können auch die = Modifikator, die genau mit den Pfaden übereinstimmt und Vorrang vor einem Regex-Match und einem Standard-Location-Block hat.

Verwenden Sie Surrogate-Control, um das CDN-Verhalten zu ändern

Obwohl Sie das CDN-Caching deaktivieren und trotzdem das Browser-Caching nutzen können, verwenden Sie Cache-Control: private, es ist besser, die direkte Kontrolle darüber zu haben. Die meisten CDNs respektieren die Surrogate-Control Header, was genau so funktioniert wie Cache-Control, außer es ist nur für CDN . gedacht. Daher, Sie können Fastly anweisen, eine Sache zu tun und dem Benutzer, eine andere zu tun.

Und NGINX, Sie müssen diesen Header manuell konfigurieren und die max-age Wert statt NGINX zu verwenden expires Direktive.

add_header Surrogat-Kontrolle "öffentlich, Höchstalter=86400";
add_header Cache-Steuerung "öffentlich, Höchstalter=120";

Sie werden auf jeden Fall mit Ihrem CDN testen wollen, ob dies funktioniert.Surrogate-Control es ist ziemlich neu und es ist nicht universell.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.