Heim > Artikel > Backend-Entwicklung > Sprechen Sie über CDN-Caching
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:
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:
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:
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
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
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
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.
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“
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.
- Browser-Cache-Aktualisierung
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.
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.
Diese Methode besteht darin, die Aktualisierung zu erzwingen und immer eine neue Anfrage zu initiieren, ohne einen Cache zu verwenden.
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!