Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Nginx-Expires-Methode zur Steuerung des Seiten-Cachings

Nginx-Expires-Methode zur Steuerung des Seiten-Cachings

王林
王林nach vorne
2023-05-12 08:04:051645Durchsuche

Syntax: läuft ab [time|epoch|max|pff] Standardwert: Die Direktive offexpires steuert die Header-Informationen „expires“ und „cache-control“ in der http-Antwort und startet die Funktion zur Steuerung der Seiten-Cache-Zeit: Sie können verwenden eine positive oder negative Zahl. Der Wert des Headers „expires“ wird durch Addition der aktuellen Systemzeit zum eingestellten Zeitwert festgelegt. Der Zeitwert steuert auch den Wert von „cache-control“: Eine negative Zahl bedeutet keinen Cache, eine positive Zahl oder Null bedeutet max-age=time epoch: Geben Sie den Wert von „expires“ als 1january,1970,00:00 an :01 gmtmax: Geben Sie „expires“ an. „Der Wert von „cache-control“ ist 31december2037 23:59:59gmt, und der Wert von „cache-control“ beträgt 10 Jahre. -1: Geben Sie den Wert von „expires“ als die aktuelle Serverzeit -1s an, was bedeutet, dass sie für immer abläuft. off: Ändern Sie die Werte von „expires“ und „cache-control“ nicht.
expires verwendet eine bestimmte Zeit und erfordert eine strikte Synchronisierung zwischen Server und Client.
Und Cache-Control verwendet die Max-Age-Direktive, um anzugeben, wie lange die Komponente zwischengespeichert wird.
Für Browser, die http1.1 nicht unterstützen, müssen die Abläufe dennoch kontrolliert werden. Daher ist es am besten, zwei Antwortheader anzugeben. Die http-Spezifikation schreibt jedoch vor, dass die Max-Age-Direktive den Expires-Header neu schreibt.

Wenn Sie nicht möchten, dass der Proxy oder Browser zwischenspeichert, fügen Sie den No-Cache-Parameter oder den privaten Parameter hinzu:
# läuft 1 Tag ab;
add_header Cache-Control No-Cache;
Add_header Cache-Control Private;
Auf diese Weise Wenn der Browser f5 aktualisiert wird, wird immer noch 200 und nicht 304 zurückgegeben.
 wenn ( !-e $request_filename) {
rewrite ^(.*) http://test.zhaopin.com/index.html break;
# add_header Cache-Control No-Cache;
# Add_Header Cache-Control Private;
When Ich schreibe add_header nach dem Umschreiben und stellte fest, dass add_header nicht funktionierte. . Das liegt daran, dass es in das if... geschrieben wird.


Das mod_expires-Modul von Apache ermöglicht die relative Einstellung des Datums wie max-age bei Verwendung des Expires-Headers, was durch die Expiresdefault-Direktive vervollständigt wird. Beispiel: Die Ablaufzeit von Bildern beträgt 10 Jahre nach Beginn der Anfrage wie in der Antwort: Send Expires-Header und Cache-Control Max-Age-Header.

expires|etag steuert die Seiten-Cache-Differenz abgelaufen: Wie im obigen Artikel erwähnt: Die Expires-Direktive steuert die Header-Informationen „expires“ und „cache-control“ in der http-Antwort und startet die Funktion zur Steuerung der Seiten-Cache-Zeit : Sie können die richtige Zahl oder eine negative Zahl verwenden. Der Wert des Headers „expires“ wird durch Addition der aktuellen Systemzeit zum eingestellten Zeitwert festgelegt. Der Zeitwert steuert auch den Wert von „cache-control“: Eine negative Zahl bedeutet keinen Cache, eine positive Zahl oder Null bedeutet max-age=time epoch: Geben Sie den Wert von „expires“ als 1january,1970,00:00 an :01 gmtmax: Geben Sie „expires“ an. „Der Wert ist 31december203723:59:59gmt, und der Wert von „cache-control“ beträgt 10 Jahre. -1: Geben Sie den Wert von „expires“ als die aktuelle Serverzeit -1s an, was bedeutet, dass sie für immer abläuft. off: Ändern Sie nicht die Werte von „expires“ und „cache-control“.

expires verwendet eine bestimmte Zeit und erfordert eine strikte Synchronisierung zwischen dem Server und dem Client.
Und Cache-Control verwendet die Max-Age-Direktive, um anzugeben, wie lange die Komponente zwischengespeichert wird.
Für Browser, die http1.1 nicht unterstützen, müssen die Abläufe dennoch kontrolliert werden. Daher ist es am besten, zwei Antwortheader anzugeben. Die http-Spezifikation schreibt jedoch vor, dass die max-age-Direktive den Expires-Header neu schreibt. Es wird im Allgemeinen verwendet, wenn sich die Seite nicht sehr schnell ändert. Wenn der Cache abläuft, überprüft der Browser zunächst, ob er gültig ist. Wenn er gültig ist, wird eine 304 zurückgegeben Statuscode. Ablaufdaten werden über den zuletzt geänderten Antwortheader bestimmt. Wie im Bild gezeigt:
Erster Besuch:
Anfrage:



Rückgabe:



Zweiter Besuch:
Anfrage:
nginx expires控制页面缓存的方法

Rückgabe:
nginx expires控制页面缓存的方法

Der zu diesem Zeitpunkt zurückgegebene Statuscode lautet: 304 , und Die Anforderung enthält mehr if-modified-since-Header als beim ersten Mal. Im Vergleich zum zuletzt geänderten Header auf dem ursprünglichen Server wird der Browser-Cache implementiert und festgestellt, ob er abgelaufen ist.
Einfach ausgedrückt handelt es sich bei „last-modified“ und „if-modified-since“ um HTTP-Header-Informationen, die zum Aufzeichnen des Zeitpunkts der letzten Änderung der Seite verwendet werden. „Last-modified“ ist jedoch der HTTP-Header, der vom Server an den Client gesendet wird, während „if-modified“. -da ist Aus dem vom Client an den Server gesendeten Header können Sie erkennen, dass der Client beim erneuten Anfordern einer lokal vorhandenen Cache-Seite den zuletzt vom Server gesendeten Zeitstempel der letzten Änderung zurücksendet if-modified- Dies ist die Aufgabe des Servers, anhand dieses Zeitstempels festzustellen, ob die Seite des Clients die neueste ist. Wenn es sich um die neueste handelt, geben Sie 304 zurück, um dem Client mitzuteilen, dass die Seite aktuell ist Die Seite in ihrem lokalen Cache ist die neueste, sodass der Client die Seite direkt von der lokalen Seite laden kann, was die im Netzwerk übertragenen Daten erheblich reduziert und auch die Belastung des Servers verringert.

Wenn Sie nicht möchten, dass der Proxy oder Browser zwischenspeichert, fügen Sie den Parameter „no-cache“ oder „private“ hinzu:
# läuft 1 Tag ab;
add_header Cache-Control No-Cache;
Add_Header Cache-Control Private;
nginx expires控制页面缓存的方法



etag: Entity-Tags sind ein Mechanismus zur Bestätigung der Gültigkeit von Webserver- und Browser-Caches. Der Ursprungsserver verwendet den etag-Antwortheader, um den etag der Komponente anzugeben, und der Browser gibt den etag über den if-none-match-Header an den Ursprungsserver zurück. Wenn es übereinstimmt, geben Sie 304 zurück , und da Die Anfrage enthält mehr If-None-Match-Header als beim ersten Mal. Implementieren Sie also Browser-Caching. Wenn dieser Wert nicht übereinstimmt, läuft der Cache ab.
etags und if-none-match sind eine häufig verwendete Methode, um festzustellen, ob sich eine Ressource geändert hat. Ähnlich wie last-modified und http-if-modified-since. Der Unterschied besteht jedoch darin, dass last-modified und http-if-modified-since nur den Zeitpunkt der letzten Änderung der Ressource bestimmen, während etags und if-none-match ein beliebiges Attribut der Ressource sein können.
etags und if-none-match funktionieren durch das Hinzufügen von Etags-Informationen zur httpresponse. Wenn der Client die Ressource erneut anfordert, werden die If-None-Match-Informationen (der Wert von etags) zur httprequest hinzugefügt. Wenn der Server überprüft, dass sich die Etags der Ressource nicht geändert haben (die Ressource hat sich nicht geändert), gibt er den Status 304 zurück. Andernfalls gibt der Server den Status 200 zurück und gibt die Ressource und die neuen Etags zurück.
Das Etag-Format auf iis muss geändert werden.
nginx expires控制页面缓存的方法

Das obige ist der detaillierte Inhalt vonNginx-Expires-Methode zur Steuerung des Seiten-Cachings. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen