Web-Caching als Beispiel für den Kauf von Milch in einem Geschäft


Wenn Sie Milch im Geschäft gekauft haben, können Sie verstehen, wie das Caching auf der Serverseite und auf der Browserseite funktioniert.

Wenn Sie ein aktiver Internetbenutzer sind (und dies ist höchstwahrscheinlich der Fall), verwenden Sie ständig Caching, kennen jedoch möglicherweise nicht die Hintergründe: wann und wie es funktioniert.

Aus Entwicklersicht erleichtert das Caching das Erstellen von leistungsstarken Webanwendungen und Webservern: Sie müssen Server, die mit Tausenden von Anforderungen überlastet sind, nicht ständig optimieren - Sie implementieren einfach Caching-Protokolle, und das Leben wird viel einfacher.

Beim Zwischenspeichern verringert sich die Ladezeit der Seite von 2 Sekunden auf 1 Sekunde ... was nicht sehr beeindruckend ist, oder? Sie können jedoch nicht darauf verzichten, wenn Sie Anforderungen von einer großen Anzahl von Benutzern verarbeiten müssen.

Durch das Caching in einer meiner Webanwendungen wurde mir klar, dass es nicht der beste Weg ist, diesen Ansatz zu erklären, wenn ich nur die Begriffe durcharbeite. Mir kam der Gedanke, dass eine gute Analogie der Weg der Milch von der Farm zum Kühlschrank sein würde.

Um meine Erklärung zu verstehen, müssen Sie ein wenig über die Grundlagen der Funktionsweise von Webservern wissen. Fangen wir an!

Übersetzt nach Alconost

Wie würde das Internet ohne Caching aussehen?


Bevor wir mit dem Caching fortfahren, sollten wir uns überlegen, wie das Internet ohne das Caching ausgesehen hätte. Stellen Sie sich für einen Moment vor, Sie leben im 18. - 19. Jahrhundert. auf dem Land. Sie haben einen Bauernhof, aber keinen Kühlschrank. Sie halten mehrere Kühe, aber ihre Milch verdirbt schnell, und daher ist es sehr schwierig, davon zu profitieren.

Übrigens haben die Leute an manchen Orten immer noch keinen Kühlschrank: Sie trinken entweder sofort frische Milch oder mischen sie mit Getreide und lassen sie gären - ein interessanter Ansatz, oder?

Im Allgemeinen möchten Sie Milch an andere Dorfbewohner verkaufen. Aber sie müssen es sehr schnell trinken. Angenommen, eine Kuh kann zehn Liter Milch pro Tag produzieren. Das heißt, wenn zu viele Menschen plötzlich auf die Farm kommen, um Milch zu holen, müssen Sie sie bitten, am nächsten Tag zurückzukehren.



Und dies ist nicht der Fall, wenn Sie nur ein paar Kühe mehr bekommen und expandieren können, weil Sie einen begrenzten Kundenstamm haben: Nur Einwohner eines Dorfes kaufen Milch. Daher gibt es ganz bestimmte Grenzen.



Ohne Caching schränkt Sie die Verarbeitungsleistung der Server ein. Caching wird zum Laden statischer Ressourcen verwendet, z.

  • Bilder
  • CSS
  • statische HTML-Dateien
  • JavaScript-Dateien.

Standardmäßig sollte der Server für jede eingehende Anforderung eine neue Antwort senden. Eine Anforderung zum Laden von Seiten kann jedoch tatsächlich vier separate Anforderungen bedeuten - eine für jede der oben genannten Kategorien. Wenn man bedenkt, dass Bilddateien normalerweise sehr umfangreich sind, wird eine große Anzahl von Benutzern aus der ganzen Welt Ihre Server leicht überlasten und das Laden von Seiten wird länger dauern.



Im Idealfall möchte ich die Belastung der Server reduzieren und die Antworten auf häufig gestellte Anfragen irgendwie beibehalten. Der Server muss nicht jede neue separate Anforderung verarbeiten - die Antwort wird vom Cache empfangen. Natürlich können Sie jederzeit weitere Server hinzufügen, aber dies kann zu unkontrollierten Kostensteigerungen führen.

Serverseitiges Caching


Zurück zu unseren Kühen. Wissen Sie, was die Arbeit unserer Milchfarm erleichtern würde?

Mit Kühlschrank einkaufen!

Die Bewohner müssen nicht mehr auf die Farm kommen und sofort Milch trinken, da diese mehrere Wochen sicher gelagert werden kann.

Das Geschäft entfernt die Ladung von der Farm: Jetzt müssen die Kühe nicht mehr für jeden Käufer gestört werden. Der Laden kümmert sich um die Nachfrage, und Sie müssen Ihre Kühe nur täglich melken. Und noch ein Plus: Jetzt können die Bewohner benachbarter Dörfer Milch kaufen, die im Kühlschrank aufbewahrt wird.





Der serverseitige Cache verarbeitet wie ein Geschäft beliebte Anfragen und liefert Inhalte viel schneller und zuverlässiger.

Das obige Bild zeigt einen Caching-Proxyserver : Er speichert statische Dateien, mit denen auf allgemeine Anforderungen reagiert wird. Dieser Server fängt solche Anforderungen ab und gibt schnell eine Antwort, mit der Sie die entsprechende Last von den Hauptwebservern entfernen können.

Zu diesem Zeitpunkt haben Sie möglicherweise bereits Fragen:

  1. Wie definiere ich eine "beliebte" Abfrage?
  2. Wie lange werden Antworten im Proxy-Cache gespeichert?

Um dies zu erklären, benötigen Sie eine detailliertere Anleitung zum Einrichten des Caching. Jetzt ist es wichtig, dass wir ein wichtiges Konzept kennen - die Frische . Auf dem Caching-Proxy befinden sich verschiedene Dateien, die zu unterschiedlichen Zeiten zwischengespeichert werden, und es muss entschieden werden, ob diese Dateien weiterhin ausgegeben werden sollen. Dies hängt von der Cache-Richtlinie ab .

Das ähnelt auch der Lagerung von Milch in einem Geschäft. Der Geschäftsleiter muss entscheiden, wie lange die Milch liegen wird, bevor sie weggeworfen wird. Caching-Proxys messen ihre Leistung anhand des Prozentsatzes der Cache-Treffer - des Prozentsatzes des Inhalts, der über den Caching-Server bereitgestellt werden kann.

Content Delivery Network


Wir haben also ein Lebensmittelgeschäft, das Ihre Milch verkauft. Schon nicht schlecht, aber die Bewohner können Milch nur in einem örtlichen Geschäft kaufen, und es ist unwahrscheinlich, dass jemand von weit her kommt. Um die Produktion zu erweitern, müssen Sie Milch in mehr Geschäften verkaufen.

Sie liefern also Milch an andere Geschäfte und befriedigen so die Nachfrage in einer viel größeren geografischen Region. Dies ähnelt einem Content Delivery Network (CDN) - Proxys auf der ganzen Welt (wie die oben beschriebenen).

Als Endbenutzer denken Sie vielleicht, dass Sie mit Highspeed-Internet die meisten Websites sehr schnell laden können. Dies ist jedoch vor allem dank der Verwendung von CDN für die schnelle Zustellung statischer Dateien möglich.

Wenn Sie in England sind und versuchen, eine auf einem Server in Chabarowsk zwischengespeicherte Datei herunterzuladen, wird die Antwort mit einer gewissen Verzögerung kommen: Das Signal benötigt Zeit, um Tausende von Kilometern Kabel zurückzulegen. Daher können Sie die Site über einen lokalen Caching-Proxyserver in Großbritannien schneller laden.





Auf diese Weise können Ihre Server eine Kopie der statischen Ressourcen an jeden Proxyserver auf dem CDN senden, sodass sie lokale Anforderungen verarbeiten, bis die Ressourcen nicht mehr "frisch" sind. Beliebte CDN-Dienstanbieter sind Rackspace, Akamai und Amazon Web Services.

Browser-seitiges Caching


Jetzt können Menschen aus dem ganzen Land (und sogar der ganzen Welt) die auf Ihrer Farm produzierte kalte Milch nach Hause bringen. Es gab ein Problem: Sie können Milch nicht zu Hause lagern. Nach dem Kauf müssen Sie sie schnell trinken und erneut in den Laden gehen, um eine neue Portion zu erhalten. Es stellt sich heraus, dass ein solches System für Käufer immer noch nicht sehr praktisch ist.

Der Kühlschrank wird uns retten!

Mit einem Kühlschrank können Sie Milch zu Hause aufbewahren und laufen nicht jedes Mal zum Geschäft. In Bezug auf das Caching ist dies ein völlig anderer Ort zum Speichern statischer Ressourcen, da er sich auf der Clientseite befindet (dh auf dem Computer, auf dem der Browser ausgeführt wird) und sich unser Proxyserver an einem entfernten Ort befand.

Dieser Ansatz ist nicht nur für den Benutzer bei häufig besuchten Websites wie Facebook oder Amazon praktisch, sondern ermöglicht es diesen Websites auch, aufgrund weniger verarbeiteter Anforderungen Serverkosten zu sparen.





Und hier ist zu beachten, dass die Milch im Kühlschrank nicht erscheint! Auf jeden Fall müssen Sie die erste Anforderung stellen, die den Server oder Proxyserver erreicht, und erst danach können Sie einige Dateien lokal zwischenspeichern.

Woher weiß der Browser, wann neue Dateien vom Server angefordert werden müssen? Schließlich müssen Sie die lokalen Dateien irgendwie aktualisieren.

So wie Milcherzeuger die Verpackung mit Verfallsdaten versehen, fügen Server dem HTTP-Antwortheader eine bestimmte Kennung hinzu. Es gibt tatsächlich vier verschiedene Systeme für das HTTP-Caching. Das oben beschriebene Szenario ist der Ablaufmethode sehr ähnlich. Bei einigen anderen Methoden muss jedoch vor dem Ausgeben der zwischengespeicherten Datei eine Anforderung an den Server gesendet werden.



Wann soll mit dem Caching begonnen werden?


Angenommen, Sie erstellen Ihre erste Webanwendung. Solange Sie nicht Tausende von Benutzern haben, müssen Sie sich wahrscheinlich keine Gedanken über das Zwischenspeichern von Protokollen machen: Die Kosten für den Betrieb eines Servers sind ohne diese Protokolle niedrig genug. Mit dem Wachstum der Benutzerbasis muss jedoch auch das Caching implementiert werden - wenn die Anwendung schnell geladen werden soll.

Nehmen Sie zum Beispiel Heroku, ein großartiges Tool zum Bereitstellen Ihrer ersten Webanwendung. Um das Caching zu implementieren, müssen Sie jedoch einen separaten Dienst verwenden - beispielsweise CloudFront von Amazon oder CloudFlare - und es wird länger dauern, dies zu lernen.

Sie können das Caching auf der Browserseite bemerken, wenn Sie versuchen, die Seite neu zu laden und neue statische Ressourcen abzurufen. Die Seite ändert sich jedoch nicht, unabhängig davon, wie oft Sie sie aktualisieren.

Der Grund dafür ist normalerweise das browser-seitige Caching-Protokoll. Um den Browser-Cache zu umgehen und neue Ressourcen vom Server anzufordern, können Sie Strg + Umschalt + R (wenn Sie einen Mac haben) oder Strg + Umschalt + R (auf einem PC) drücken.

Über den Übersetzer

Der Artikel wurde von Alconost übersetzt.

Alconost lokalisiert Spiele , Anwendungen und Websites in 68 Sprachen. Muttersprachliche Übersetzer, Sprachtests, Cloud-Plattform mit API, kontinuierliche Lokalisierung, Projektmanager rund um die Uhr, jedes Format von Zeichenfolgenressourcen.

Wir machen auch Werbe- und Schulungsvideos - für Websites, die verkaufen, Image, Werbung, Schulung, Teaser, Expliner, Trailer für Google Play und den App Store.

Weitere Details

Source: https://habr.com/ru/post/de416255/


All Articles