Heim  >  Artikel  >  Backend-Entwicklung  >  Sprechen Sie über CDN-Caching

Sprechen Sie über CDN-Caching

一个新手
一个新手Original
2017-09-07 10:24:416873Durchsuche

1. Was ist CDN?

Wenn es um die Rolle von CDN geht, können Sie 8 Jahre Erfahrung im Kauf von Bahntickets nutzen, um es zu beschreiben:

Vor acht Jahren gab es keine Bahnticketagentur und 12306. cn war es umso mehr. Zu dieser Zeit konnten Bahntickets nur an der Kasse des Bahnhofs gekauft werden, und der kleine Landkreis, in dem ich lebte, hatte keinen Zugang zu Zügen. Bahntickets mussten am Bahnhof in der Stadt gekauft werden, und das dauerte 4 Stunden Hin- und Rückfahrt vom Landkreis in die Stadt. Die Fahrt ist Lebensverschwendung. Später wurde es besser, in der kleinen Kreisstadt Züge zu kaufen, was für die Menschen in der Stadt viel bequemer ist .

CDN kann als die in jedem Landkreis verteilten Bahnticketverkaufsstellen verstanden werden. Wenn der Benutzer die Website durchsucht, wählt das CDN einen CDN-Edge-Knoten aus, der dem Benutzer am nächsten liegt, um auf die Anfrage des Benutzers zu reagieren , Hainan Mobile Die Anfrage des Benutzers gelangt nicht bis zum Server im Computerraum von Beijing Telecom (vorausgesetzt, die Ursprungsseite wird im Computerraum von Beijing Telecom bereitgestellt).

Die Vorteile von CDN liegen auf der Hand: (1) CDN-Knoten lösen das Problem des betreiber- und überregionalen Zugriffs und die Zugriffsverzögerung wird erheblich reduziert. (2) Die meisten Anfragen werden an CDN-Edge-Knoten abgeschlossen , und CDN spielt eine Rolle. Die Offloading-Funktion reduziert die Belastung der Ursprungsseite.

2. Was ist Cache?

In diesem Artikel wird weder auf die High-Level-Architektur hinter CDN eingegangen, noch wird darauf eingegangen, wie CDN globale Verkehrsplanungsstrategien erreicht. Dieser Artikel konzentriert sich auf die Art und Weise, wie Daten nach der Installation von CDN zwischengespeichert werden. Caching ist ein allgegenwärtiges Beispiel für den Tausch von Raum gegen Zeit. Durch die Nutzung des zusätzlichen Platzes können wir höhere Geschwindigkeiten erreichen.
Lassen Sie uns zunächst einen Blick darauf werfen, wie der Browser des Benutzers mit dem Server interagiert, wenn keine Website mit dem CDN verbunden ist:
Sprechen Sie über CDN-Caching
Wenn der Benutzer die Website durchsucht, kann der Browser den Inhalt speichern Kopien von Bildern oder anderen Dateien lokal speichern, sodass der Browser beim erneuten Besuch der Website nicht alle Dateien herunterladen muss.
Wenn in der Mitte eine CDN-Schicht hinzugefügt wird, ist die Interaktion zwischen dem Browser des Benutzers und dem Server wie folgt:
Sprechen Sie über CDN-Caching
Der Client-Browser prüft zunächst, ob der lokale Cache abgelaufen ist Wenn der Cache abgelaufen ist, wird er an den Rand des CDN gesendet. Der Knoten initiiert eine Anfrage, und der CDN-Randknoten erkennt, ob der Cache der vom Benutzer angeforderten Daten abgelaufen ist. Wenn er nicht abgelaufen ist, antwortet er direkt auf die Anfrage des Benutzers Dieses Mal endet eine abgeschlossene HTTP-Anfrage. Wenn die Daten abgelaufen sind, muss das CDN auch eine Antwortnachricht an die Ursprungsseite senden (zurück zur Quellanforderung), um die neuesten Daten abzurufen. Das typische Topologiediagramm von CDN sieht wie folgt aus:
Sprechen Sie über CDN-Caching
Es ist ersichtlich, dass in dem Szenario, in dem CDN vorhanden ist, die Daten zwei Phasen durchlaufen haben: Client-(Browser-)Caching und CDN-Edge-Knoten-Caching. Im Folgenden sind die beiden Phasen aufgeführt: Detaillierte Analyse der beiden Phasen des Caching
2. Client-(Browser-)Caching

  • Nachteile des Client-Caching

Clientseitiges Caching reduziert Serveranfragen, vermeidet wiederholtes Laden von Dateien und verbessert die Benutzerleistung erheblich. Wenn jedoch die Website aktualisiert wird (z. B. CSS-, JS- und Bilddateien werden ersetzt), wird die alte Version der Datei immer noch lokal im Browser gespeichert, was zu unvorhersehbaren Folgen führt.

Es war einmal, als eine Seite geladen wurde, die Positionen der Elemente auf der Seite wanderten und das Klicken auf Schaltflächen fehlschlug. Der Front-End-GG fragte gewöhnlich: „Wurde der Cache geleert?“ , dann Strg+F5, Alles ist in Ordnung. Aber manchmal, wenn wir einfach die Eingabetaste in der Adressleiste des Browsers drücken oder zum Aktualisieren einfach F5 drücken, ist das Problem immer noch nicht gelöst. Wussten Sie, dass diese drei verschiedenen Betriebsmethoden bestimmen, wie der Browser den Cache aktualisiert?

Wie bestimmt der Browser, ob eine lokale Datei oder eine neue Datei auf dem Server verwendet werden soll? Hier sind verschiedene Methoden der Beurteilung.

  • Browser-Cache-Richtlinie

Läuft ab

Läuft ab:Sa, 24. Januar 2015 20:30:54 GMT
Sprechen Sie über CDN-Caching
Wenn Expires in der HTTP-Antwortnachricht festgelegt ist, vermeiden wir die Verbindung zum Server, bevor Expires abläuft. Zu diesem Zeitpunkt muss der Browser keine Anfrage an den Browser senden. Er muss lediglich feststellen, ob das vorhandene Material abgelaufen ist. Es besteht überhaupt keine Notwendigkeit, die Belastung des Servers zu erhöhen.
Cache-Kontrolle: max-age
Sprechen Sie über CDN-Caching
Die Expires-Methode ist sehr gut, aber wir müssen jedes Mal eine genaue Zeit berechnen. Das Tag „max-age“ erleichtert uns den Umgang mit Ablaufzeiten. Es genügt zu sagen, dass Sie diese Informationen nur eine Woche lang nutzen können.

Das maximale Alter wird in Sekunden gemessen, z. B.:
Cache-Control:max-age=645672
Die angegebene Seite läuft in 645672 Sekunden (7,47 Tage) ab.
Zuletzt geändert
Um den Browser über die aktuelle Dateiversion zu informieren, sendet der Server ein Tag mit der Zeit der letzten Änderung, zum Beispiel:
Zuletzt geändert:Di , 06. Januar 2015 08:26:32 GMT
Sprechen Sie über CDN-Caching
Auf diese Weise erkennt der Browser die Erstellungszeit der empfangenen Datei. Bei nachfolgenden Anfragen überprüft der Browser die folgenden Regeln:
1. Host durchsuchen: Hey, ich brauche die Datei jquery.min.js, wenn sie nach Dienstag, 06. Januar 2015, 08:26:32 Uhr GMT geändert wurde.
2. Server: (Überprüfen Sie den Änderungszeitpunkt der Datei)
3. Hey, diese Datei wurde nach diesem Zeitpunkt nicht geändert, Sie haben bereits die neueste Version.
4. Browser: Großartig, dann zeige ich es dem Benutzer.
In diesem Fall gibt der Server nur einen 304-Antwortheader zurück, was die Menge der Antwortdaten reduziert und die Antwortgeschwindigkeit verbessert. Informationen zur 304-Antwort finden Sie unter:
http://www.cnblogs.com/ziyunfei/archive/2012/11/17/2772729.html
Das Bild unten zeigt die Seite, die danach einen 304-Antwortheader zurückgibt Drücken Sie F5, um die Seite zu aktualisieren.
Sprechen Sie über CDN-Caching
ETag
Oft funktioniert der Vergleich von Dateien nach Änderungszeit. Unter bestimmten Umständen, beispielsweise wenn die Serveruhr falsch ist, die Serveruhr geändert wurde oder die Serverzeit nicht rechtzeitig nach der Sommerzeit aktualisiert wurde, kann es jedoch zu Problemen beim Vergleich von Dateiversionen anhand der geänderten Zeit kommen.

ETag kann verwendet werden, um dieses Problem zu lösen. ETag ist eine eindeutige Kennung einer Datei. Wie ein Hash oder ein Fingerabdruck verfügt jede Datei über eine individuelle Signatur, die sich bei jeder Dateiänderung ändert.

Der Server gibt das ETag-Tag zurück:
ETag:“39001d-1762a-50bf790757e00“
Sprechen Sie über CDN-Caching
Die nächste Zugriffssequenz ist wie folgt:
- Browser: Hey, ich brauche die Datei jquery.min.js. Gibt es etwas, das nicht mit der Zeichenfolge „39001d-1762a-50bf790757e00“ übereinstimmt? - Server: (ETag prüfen...)
- Server: Hey, die Version, die ich hier habe, ist auch „39001d-1762a-50bf790757e00“, du bist bereits die neueste Version
- Browser: OK, dann können Sie den lokalen Cache verwenden
Wie Last-modified löst ETag das Problem des Dateiversionsvergleichs. Es ist nur so, dass die Ebene von ETag höher ist als die von Last-Modified.

Zusätzliche Tags Caching-Tags funktionieren nie, aber manchmal brauchen wir eine gewisse Kontrolle darüber, was zwischengespeichert wurde.
l Cache-Kontrolle: öffentlich bedeutet, dass die zwischengespeicherte Version von Proxyservern oder anderen Zwischenservern erkannt werden kann.
l Cache-Kontrolle: privat bedeutet, dass diese Datei für verschiedene Benutzer unterschiedlich ist. Nur der eigene Browser des Benutzers kann zwischenspeichern, öffentliche Proxyserver erlauben kein Zwischenspeichern.
l Cache-Kontrolle: Kein Cache bedeutet, dass der Inhalt der Datei nicht zwischengespeichert werden soll. Dies ist bei Suchergebnissen oder beim Umblättern von Seiten sehr nützlich, da sich der entsprechende Inhalt für dieselbe URL ändert.

Sprechen Sie über CDN-Caching - Browser-Cache-Aktualisierung

  • Geben Sie die URL in die Adressleiste ein und drücken Sie die Eingabetaste oder klicken Sie auf die Schaltfläche „Los“

    Der Browser ruft die Daten der Webseite mit der geringsten Anfrage ab und die Der Browser verwendet den lokalen Cache direkt für alle Inhalte, die nicht abgelaufen sind, wodurch die Anforderungen an den Browser reduziert werden. Daher sind die Tags „Expires“ und „Max-Age“ nur für diese Methode gültig.

  • Drücken Sie F5 oder die Browser-Aktualisierungsschaltfläche

    Der Browser hängt die erforderliche Cache-Aushandlung an die Anfrage an, lässt jedoch nicht zu, dass der Browser den lokalen Cache direkt verwendet, was möglich ist Last-Modified , ETag funktioniert, hat aber keine Auswirkung auf Expires.

  • Drücken Sie Strg+F5 oder drücken Sie Strg und klicken Sie auf die Schaltfläche „Aktualisieren“

    Diese Methode besteht darin, die Aktualisierung zu erzwingen und immer eine neue Anfrage zu initiieren, ohne einen Cache zu verwenden.

  • CDN-Cache

Nachdem der lokale Cache des Browsers abgelaufen ist, initiiert der Browser eine Anfrage an den CDN-Edge-Knoten. Ähnlich wie das Browser-Caching verfügen auch CDN-Edge-Knoten über einen Caching-Mechanismus.

  • Nachteile des CDN-Caching

Der Offloading-Effekt von CDN reduziert nicht nur die Zugriffsverzögerung des Benutzers, sondern auch die Belastung der Ursprungsseite . Die Mängel liegen jedoch auch auf der Hand: Wenn die Website aktualisiert wird und die Daten auf dem CDN-Knoten nicht rechtzeitig aktualisiert werden, wird der CDN-Edge-Knoten nicht synchronisiert, selbst wenn der Benutzer im Browser Strg + F5 verwendet, um den Browser-Cache ungültig zu machen Die neuesten Daten verursachen Ausnahmen beim Benutzerzugriff.

  • CDN-Caching-Strategie

CDN-Edge-Knoten-Caching-Strategien variieren von Dienstanbieter zu Dienstanbieter, folgen jedoch im Allgemeinen dem http-Standardprotokoll und legen CDN-Edge-Knotendaten über das Feld „Cache-control: max-age“ in der http-Antwort fest Header. Cache-Zeit.

Wenn der Client Daten vom CDN-Knoten anfordert, ermittelt der CDN-Knoten, ob die zwischengespeicherten Daten abgelaufen sind. Wenn die zwischengespeicherten Daten nicht abgelaufen sind, werden die zwischengespeicherten Daten andernfalls direkt an den Client zurückgegeben Der CDN-Knoten sendet die zwischengespeicherten Daten an die Quelle. Die Site gibt eine Return-to-Origin-Anfrage aus, ruft die neuesten Daten von der Ursprungssite ab, aktualisiert den lokalen Cache und gibt die neuesten Daten an den Client zurück.

CDN-Dienstanbieter bieten im Allgemeinen mehrere Dimensionen basierend auf Dateisuffix und Verzeichnis an, um die CDN-Cache-Zeit anzugeben und Benutzern eine verfeinerte Cache-Verwaltung zu bieten.

CDN-Cache-Zeit hat einen direkten Einfluss auf die „Rücklaufquote“. Wenn die CDN-Cache-Zeit kurz ist, kommt es häufig zu Datenfehlern auf den CDN-Edge-Knoten, was zu häufigen Rücksendungen zum Ursprung führt, was die Belastung der Ursprungsseite erhöht und auch die Zugriffsverzögerung erhöht; , Datenaktualisierungen werden auftreten. Entwickler müssen bestimmte Unternehmen hinzufügen, um ein bestimmtes Daten-Cache-Zeitmanagement durchzuführen.

  • CDN-Cache-Aktualisierung

CDN-Edge-Knoten sind für Entwickler transparent, verglichen mit der erzwungenen Aktualisierung des Browsers Strg+F5, wenn der Browser lokal ist Wenn der Cache ungültig ist, können Entwickler den CDN-Edge-Knoten-Cache über die vom CDN-Dienstanbieter bereitgestellte Schnittstelle „Cache aktualisieren“ löschen. Auf diese Weise können Entwickler mithilfe der Funktion „Cache aktualisieren“ erzwingen, dass der Datencache auf dem CDN-Knoten nach der Aktualisierung der Daten abläuft, und so sicherstellen, dass der Client beim Zugriff die neuesten Daten abrufen kann.

Das obige ist der detaillierte Inhalt vonSprechen Sie über CDN-Caching. 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