Cachingtechnologien des Internets

Grundlagen und Arten des Cachings

Im Web Umfeld ist Caching so zu verstehen, dass eine Kopie eines Objekts, bzw. einer Ressource in physischer Nähe zum Klienten gehalten wird [2].

Es gibt beim Caching verschiedene Orte, wo solche Kopien gehalten werden können. Entweder direkt beim Klienten (z. B. Browser) oder im Netzwerk zwischen Klient und originalem Server [2].

  • Browser Caches Aus Performancesicht ist ein Request optimal, wenn er  nicht mit einem Server kommunizieren muss. Eine lokale Kopie der Antwort  eliminiert jegliche Latenz und Datenübertragungskosten, die normalerweise  anfallen würden. Der HTTP Standard definiert hierfür die sogenannte Cache-Control Direktive, die kontrolliert wie lange ein Browser oder ein zwischen Server und Browser liegender Cache, Antworten zwischenspeichert.
  • Caching Proxies in Caching Proxy ist ein Server, der in der Netzwerkhierarchie  zwischen einem Klienten und dem eigentlichen Quell-Web-Server platziert wird.  Er unterbricht dabei die HTTP Anfragen von Klienten und prüft dabei, ob die angefragte Ressource im eigenen Cache gefunden wurde. Falls dies positiv ist, liefert der Caching Proxy die lokale Datei aus, ist die Prüfung negativ, fragt der Caching Proxy beim originalen Web-Server die Ressource an.
  • Transparent Proxy Cache  Der Proxy Cache löst das Problem der benötigten (manuellen) Konfiguration eines Proxy-Cache Servers. Transparente Cache-Server unterbrechen HTTP Anfragen, die auf den HTTP Port 80 abgezielt sind und leiten  die Anfragen automatisch auf Proxy Cache-Server weiter
  • Reverse Proxy Cache Beim Reverse Proxy-Caching wird der Ansatz vom (Transparent) Proxy-Cache, bei dem der eigentliche Cache in der Nähe der Klienten liegt, einfach umgekehrt. Dies bedeutet, dass Reverse Proxy-Caches in der Nähe von der Quelle der angefragten Ressourcen steht. Diese Option ist vor allem bei Szenarien mit viel Zugriffszahlen und hoher Last zu empfehlen, um  sicherzustellen, das der Dienst immer zuverlässig erreichbar ist.

Praktischer Test

Beim Versuch sollen die folgenden Kombinationen von Cache Ansätzen getestet werden. Die genauen Testbeschreibungen können im Paper Evaluation von Caching Technologien im Internet [1] nachgelesen werden.

  1. Laden der Ressourcen ohne Caches. Dabei werden keine von uns betriebenen Cache Mechanismen verwendet. Ob im von uns nicht verwalteten Netzwerkbereich (Internet) Caches zum Einsatz kommen, ist hier nicht zu klären.
  2. Laden der Ressourcen mit aktiviertem Browser Caching durch den Quell Web-Server
  3. Laden der Ressourcen mit aktiviertem Reverse Proxy Caching auf dem Quell Webserver
  4. Laden der Ressourcen mit aktiviertem Caching Proxy in der Nähe des Klienten
  5. Laden der Ressourcen mit aktiviertem Reverse Proxy Caching auf dem Quell Web-Server, aktiviertem Caching Proxy in der Nähe des Klienten und aktiviertem Browser Caching durch den Quell Web-Server

Die initiale Ladezeit ohne Caches stagnierte immer etwa bei 22-25 Sekunden. Die Differenz hier ist durch unterschiedliche Zustände des Netzwerks zu erklären. Bei eingeschaltetem Browser Caches wird wie erwartet die Ressource beim zweiten Zugriff aus dem lokalen Browser Cache geladen und deshalb entsteht kein Netzwerkverkehr,  sondern wird lokal ausgelesen.
Beim Einsatz eines Reverse-Proxy Caches wird jener auf  dem gleichen Server, wie der eigentliche Web-Server betrieben. Dies hat zur Folge, dass die Ladezeit in etwa gleich ist, wie wenn die Ressource direkt vom Quellserver geladen wird. Anzunehmen ist hier, dass man eine Geschwindigkeitszunahme bei einem zweiten Klienten, der ebenfalls über den Reverse-Proxy Server auf die gleichen Ressourcen  zugreifen würde.

Test-ohne-Caches

Abbildung: Laden der Ressourcen ohne Caches

Verwendet man einen lokalen Proxy-Cache ist zu erkennen, dass  lediglich die Ladezeit aus der in diesem Beispiel lokalen Festplatte des Servers eine Rolle spielt. Es fällt ist diesem Setup nur lokaler Traffic innerhalb des loopback Netzwerkinterfaces des Testrechners an. Kombiniert man nun alle Mechanismen, kann  der intitiale Download der Ressourcen durch die bereits aufgewärmten Caches deutlich  gesenkt werden.
Bei weiteren Zugriffen wird nun der lokale Browser-Cache aktiv und verschnellert die Zugriffe um weitere 63 Millisekunden im direkten Vergleich zum  Proxy-Cache Server.

Test-mit-Caches

Abbildung: Laden der Ressourcen mit Reverse Proxy Caching, Caching Proxy und Browser Caching

Fazit – Was ist wirklich sinnvoll?

Nimmt man alle existenten Caching Lösungen als Grundlage, ist es schwer zu entscheiden, welche der vielen Möglichkeiten nun die Beste ist. Allgemein gesagt, hängt die Effektivität von einem Web-Cache sehr stark vom Einsatzszenario ab, das bedeutet, dass es völlig unterschiedliche Ergebnisse bei verschiedenen Szenarien geben kann.

Als Beispiel haben Firmen eventuell erhöhten Erfolg, wenn diese einen Standard  Caching-Proxy einführen und damit alle Mitarbeiter zwingen, den Proxy als einzigen
Weg ins WWW, verwenden zu können. Da innerhalb der Firma vielleicht sowieso Richtlinien, wie die automatische Konfiguration eines Proxies im Browser erzwungen
werden, wird dieser große Nachteil, nicht als ein solcher gesehen.

Ein weiteres Beispiel kann bei Internet Service Provider (ISP) gefunden werden. Bei diesen machen transparente Caches, platziert an zentralen Infrastrukturkomponenten
wie Router und Switches, mehr Sinn. Diese würden Ressourcen transparent zwischenspeichern und so den Netzwerkverkehr im eigenen Netzwerk senken, sollten
Klienten hinter den jeweiligen Edge Geräten mehrmals Ressourcen anfragen. Ein gutes  Beispiel für diesen Use-Case sind Caches für Paketupdateserver. Linux basierte Betriebssysteme aktualisieren ihre Pakete von jenen Updateservern, indem diese dort  prüfen, ob neue Pakete zur Verfügung stehen. Da ein Ziel eines ISP die Homogenisierung der Betriebssysteme sein sollte, würden bei einer Veröffentlichung von Updates gleich mehrere tausend Systeme das Update downloaden wollen. Hätte man nun keinen  transparenten Cache auf Netzwerkebene in Betrieb würde die gleiche Ressource  vielfach über das Netzwerk geladen werden müssen. Beim Thema Browser Caching ist  im Versuch gezeigt worden, dass diese Möglichkeit des Cachings in jedem der Szenarien sinnvoll ist. Hier ist wichtig zu entscheiden, welche Lebenszeiten ein Browser Cache haben soll. Vor allem müssen die Ressourcen identifiziert werden, welche gecached werden dürfen und welchen nicht.

Abschließend lässt sich also zusammenfassen, dass ein Einsatz von Caches im Web in jedem Falle empfehlenswert ist, wenn klar definiert wurde, welche Ressourcen auf welche Art gecached werden sollen. Welche der jeweiligen Caching Technologien und  Ansätze jedoch tatsächlich zum Einsatz kommen, hängt stark von den gegebenen Umständen und der Anwendung ab. In unserem Praxisbeispiel hat sich gezeigt, dass eine Kombination aus allen drei Ansätzen durchaus Erfolg haben kann.

Quellen

[1] Steffen Wagner, Evaluation von Caching Technologien im Internet, Link

[2] Waleed Ali, Siti Mariyam Shamsuddin und Abdul Samad Ismail. A Survey of Web Caching and Prefetching. In: Int. J. Advance. Soft Comput. Appl 3.1 (2011).

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s