Beispiel für eine Nginx-Cache-Konfiguration

Beispiel für eine Nginx-Cache-Konfiguration

Beim Entwickeln und Debuggen einer Webanwendung stehen Sie häufig vor dem Problem, dass Sie den Browser-Cache leeren oder eine Aktualisierung erzwingen müssen, um sie zu testen. Hier sind einige Einstellungen für die No-Cache-Konfiguration von Apache und die No-Cache-Konfiguration von Nginx. Es gibt zwei allgemeine Cache-Einstellungen, die beide mit add_header festgelegt werden: Cache-Control und Pragma.

nginx:
Standort ~ .*\.(css|js|swf|php|htm|html )$ {
add_header Cache-Steuerung no-store;add_header Pragma no-cache;
}

Für statische Inhalte, die auf der Site nicht häufig geändert werden (wie Bilder, JS und CSS), können Sie auf dem Server eine Ablaufzeit festlegen, um den Browser-Cache zu steuern und so den Bandbreitenverkehr effektiv zu reduzieren und die Serverlast zu verringern.

Nehmen wir den Nginx-Server als Beispiel:

Standort ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
#Die Ablaufzeit beträgt 30 Tage.
#Bilddateien werden selten aktualisiert, daher können Sie bei ihrem Ablauf einen höheren Wert festlegen.
#Wenn Sie häufig aktualisieren, können Sie es kleiner einstellen.
läuft in 30 Tagen ab;
}
Standort ~ .*\.(js|css)$ {
läuft in 10 Tagen ab;
}

[ Hintergrund ]: Expires ist ein Header-Feld in der Antwortnachricht des Webservers. Bei der Beantwortung einer HTTP-Anforderung teilt es dem Browser mit, dass der Browser vor Ablauf der Frist Daten direkt aus dem Browser-Cache abrufen kann, ohne erneut eine Anforderung stellen zu müssen.

Verwandte Informationen

1. Cache-Kontrollstrategie

Cache-Control und Expires haben die gleiche Funktion. Beide geben die Gültigkeitsdauer der aktuellen Ressource an und steuern, ob der Browser Daten direkt aus dem Browser-Cache abruft oder eine Anfrage zum Abrufen der Daten erneut an den Server sendet. Es ist nur so, dass Cache-Control mehr Optionen und detailliertere Einstellungen hat. Wenn es gleichzeitig eingestellt wird, ist seine Priorität höher als Expires.

HTTP-Protokollheader Cache-Control :

Der Wert kann öffentlich, privat, kein Cache, kein Speicher, keine Transformation, muss erneut validiert werden, Proxy-Erneutvalidierung oder maximales Alter sein.

Die Anweisungen in den einzelnen Nachrichten haben folgende Bedeutung:

  • Öffentlich gibt an, dass die Antwort von jedem Cache zwischengespeichert werden kann.
  • „Privat“ bedeutet, dass die gesamte oder teilweise Antwortnachricht für einen einzelnen Benutzer nicht vom gemeinsam genutzten Cache verarbeitet werden kann. Dadurch kann der Server dem aktuellen Benutzer nur einen Teil der Antwortnachricht beschreiben, ohne dass diese Antwortnachricht für Anfragen anderer Benutzer gültig ist.
  • no-cache gibt an, dass die Anforderungs- oder Antwortnachricht nicht zwischengespeichert werden kann.
  • „no-store“ wird verwendet, um die unbeabsichtigte Veröffentlichung wichtiger Informationen zu verhindern. Das Senden in einer Anforderungsnachricht führt dazu, dass weder die Anforderungs- noch die Antwortnachrichten den Cache verwenden.
  • max-age gibt an, dass der Client Antworten akzeptieren kann, die nicht älter als die angegebene Zeit (in Sekunden) sind.
  • min-fresh gibt an, dass der Client Antworten empfangen kann, deren Antwortzeit kürzer ist als die aktuelle Zeit plus die angegebene Zeit.
  • max-stale gibt an, dass der Client auch nach Ablauf der Zeitüberschreitung noch Antwortnachrichten empfangen kann. Wenn Sie einen Wert für die maximale Anzahl veralteter Nachrichten angeben, kann der Client Antwortnachrichten empfangen, die das angegebene Zeitlimit überschreiten.

Zuletzt geändert/Wenn geändert seit

  • Last-Modified/If-Modified-Since muss in Verbindung mit Cache-Control verwendet werden.
  • Zuletzt geändert: Gibt den Zeitpunkt der letzten Änderung dieser Antwortressource an. Als Antwort auf eine Anfrage teilt der Webserver dem Browser mit, wann die Ressource zuletzt geändert wurde.
  • If-Modified-Since: Wenn eine Ressource abläuft (unter Verwendung des Max-Age-Flags von Cache-Control) und festgestellt wird, dass die Ressource über eine Last-Modified-Deklaration verfügt, enthält die nächste Anforderung an den Webserver den If-Modified-Since-Header, der die Anforderungszeit angibt. Nach Erhalt der Anfrage sucht der Webserver den If-Modified-Since-Header und vergleicht ihn mit der letzten Änderungszeit der angeforderten Ressource. Wenn die letzte Änderung relativ neu ist, bedeutet dies, dass die Ressource erneut geändert wurde, und auf den gesamten Ressourceninhalt (der in den Antwortnachrichtentext geschrieben ist) wird mit HTTP 200 geantwortet; wenn die letzte Änderung relativ alt ist, bedeutet dies, dass die Ressource nicht geändert wurde, und die Antwort lautet HTTP 304 (kein Text erforderlich, was beim Browsen Zeit spart), wodurch der Browser angewiesen wird, den gespeicherten Cache weiterhin zu verwenden.

Was letztendlich erreicht wird, ist das Äquivalent zur Einrichtung dieser drei Arten von HTML-Caching-Technologien:

<meta http-equiv="pragma" content="kein-cache"/>
<meta http-equiv="Cache-Steuerung" content="kein Cache, muss erneut validiert werden"/> 
<meta http-equiv="läuft ab" content="0"/>

Dies ist das Ende dieses Artikels über den detaillierten Fall der Nginx-Cache-Einstellungen. Weitere relevante Nginx-Cache-Einstellungen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • So verbergen Sie die Versionsnummer und die Cache-Zeit von Webseiten in Nginx
  • Detaillierte Erläuterung zum Einrichten des Ressourcencaches in Nginx
  • Einführung in das Batch-Cache-Löschskript von nginx proxy_cache
  • So richten Sie statische Dateien auf dem Nginx-Cache-Server ein
  • Umgang mit Nginx und Browser-Cache

<<:  HTML-Head-Tag-Metadaten zum Erreichen einer Aktualisierungsumleitung

>>:  Detaillierte Erklärung des TIMESTAMPDIFF-Falls in MySQL

Artikel empfehlen

Zusammenfassung der Anwendungsbereiche von Kubernetes

Kubernetes ist aufgrund seiner Anwendungsportabil...

Foreman Ubuntu16 Schnellinstallation

Kurzanleitung Das Foreman-Installationsprogramm i...

HTML-Tutorial: Horizontales Liniensegment in HTML

<br />Dieses Tag kann eine horizontale Linie...

Die Verwendung der Vue-Direktive v-bind und zu beachtende Punkte

Inhaltsverzeichnis 1. v-bind: kann einige Daten a...

Spezifischer Einsatz von Routing Guards in Vue

Inhaltsverzeichnis 1. Globale Wache 1.1 Globaler ...

Detailliertes Beispiel zum Entfernen doppelter Daten in MySQL

Detailliertes Beispiel zum Entfernen doppelter Da...

CSS3-Eigenschaft line-clamp steuert die Verwendung von Textzeilen

Beschreibung: Begrenzen Sie die Anzahl der Textze...

Beispiele für die Verwendung von HTML-Marquee-Tags

Dieses Tag ist nicht Teil von HTML3.2 und unterstü...

Können Sie alle Testfragen zum Erstellen der Webseite beantworten?

Fragen zum Webdesign. Können Sie alle beantworten...

So zeigen Sie den Typ des gemounteten Dateisystems in Linux an

Vorwort Wie Sie wissen, unterstützt Linux viele D...