Abbildung 4: Conditional GET, eine Erweiterung von HTTP/1.0

4 Aktuelle Ansätze bei Caching Problemen

4.1 Kohärenz

Alle Web Caches müssen versuchen die gespeicherten Objekte aktuell zu halten. Dieses Problem ist aus traditionellen verteilten Systemen bekannt. Prinzipiell ist das Web nur eingrösseres verteiltes Dateisystem und verteilte Dateisysteme werden seit Jahren erfolgreich eingesetzt.

Kohärenz-Mechanismen kann man in zwei generelle Klassen einteilen: validation check und callback Mechanismen. Die Abbildung 3 zeigt die zwei grundlegenden Techniken, mit der die Korrektheit und Aktualität eines gecacheten Objekts garantiert werden kann.

Die Grössenordnung des WWW bedingt, dass dort eigentlich nur die Kohärenzprüfung über validation check praktikabel ist. Eine einzelne Seite kann in Tausend oder Millionen Caches (jeder Web-Browser ist einer) gespeichert werden. Dies macht es für einen Server unmöglich, alle Caches zu benachrichtigen. Durch eine hierarchische Struktur könnte manzwar die Zahl der zu benachrichtigenden Caches verringern, aber es bleibt ineffektiv bei jeder Änderung irgendeiner Seite im WWW eine Notify-Lawine zu starten.

Naive Kohärenz-Mechanismen sind die am Beispiel heutiger Browser schon angesprochenen Check-Every-Time und Check-Never Mechanismen. Im ersten Fall wird immer, wenn ein GET oder conditional GET12 für eine gecachete Seite eingeht, ein conditional GET an den nächsthöheren Cache oder an den Server gesendet. Das conditional GET ergänzt das normale GET des HTTP/1.0 um ein Not Modified. Der Client erweitert die GET-Anfrage um eine If-Modified-Since Zeile mit dem Datum der im Cache gespeicherten Seite. Ist das Originaldokument unverändert, antwortet der Server mit einem 304 Not Modified und derClient zeigt die lokale Kopie an. Im anderen Fall sendet der Server ein 200 OK und die neue HTML-Seite. Der Check-Every-Time-Ansatz in Zusammenhang mit einem conditional GET war der erste eingesetzte Kohärenz-Mechanismus. Für den umfangreichen Einsatz im World Wide Web ist er allerdings wenig brauchbar. Wenn jeder Cache mit einem conditional GET an einenübergeordneten Cache bzw. an den Server selbst reagiert, wird jede Anfrage bis zum Server durchgereicht. Dies führt, selbst wenn keine HTML-Datenübertragen werden müssen, zuübermässiger Netzlast und reduziert die Anzahl der Anfragen an den Remote Server nicht.Der zweite naive Kohärenz-Mechanismus, der oben angesprochen wird: Never-Check, überprüft nie, ob die gecachete Seite noch aktuell ist. Um eine Seite explizit neu zu laden, muss der User einen Header mit Pragma:no-Cache-Zeile verwenden. Diese Technik verringert zwar die Netzlast, gibt aber keinerlei Garantie für die Aktualität desübertragen Dokuments. HTTP/1.113 ist die Weiterentwicklung des Hypertext Transfer Protocol 1.0 und bietet neben Fortschritten, wie Pipelining und Kompression, auch hinsichtlich des Cachings einige zusätzliche Möglichkeiten [Fie97]. Caching in HTTP/1.1 basiert auf zwei unterschiedlichen Ansätzen: dem Expiration- und dem Validation-Modell.

Expiration

Das Expiration-Modell definiert ein Verfalldatum für eine Seite. So können Zugriffe auf den Server eingespart werden, wenn ein aktuelles Dokument im Cache-Speicher existiert.

Entweder gibt ein Server für eine Seite explizit eine Verfallzeit an, oder der Proxy Cacheberechnet eine heuristische. Für den zweiten Fall gibt die HTTP/1.1-Spezifikation zwar keine Algorithmen, aber Rahmenvorgaben für ihr Ergebnis an. Alle Server sind aufgefordert, so oftwie möglich eine explizite Expiration-Zeit anzugeben, da die heuristischen Grenzzeiten nur mit Vorsicht zu betrachten sind [Fie97].

Validation

Unter dem Validation-Modell fasst das RFC 2068 die Techniken des Hypertext Transfer Proto-cols zur Prüfung von Kopien im Cache auf Gültigkeit (unverändert gegenüber dem Original) zusammen. Sowohl das vom conditional GET bekannte Last-Modified-Datum, als auchzusätzliche Entity Tags, sind hier zum Abgleich zwischen Cache und Server vorgesehen.

Allgemein

Zusätzlich zu den beiden oben angegebenen Modellen werden in der HTTP/1.1-Spezifikation, in einem eigenen Kapitel zu Caching weitere Rahmenbedingungen bezüglich Korrektheit undTransparenz für Server, Clients und Caches festgelegt. Implementiert ist der neue Standard aber erst bei wenigen Referenzprodukten. Einige Teile, insbesondere Entwicklungen der Caching-Möglichkeiten, sind aber schon bei mehreren HTTP/1.0-Anwendungen hinzugefügt.

Weitere Überlegungen [DP96] betonen die Notwendigkeit, dem Benutzer eine Art Gültigkeitsgarantie in Prozent zu bieten. Zu jedem gesendeten Dokument sollte dem Benutzer zusätzlich das Expiration-Datum oder die spekulative Berechnung des Caches offengelegt werden. Wenn das so angezeigte Dokument nicht den Bedingungen des Benutzers genügt,kann er explizit eine "bessere" Kopie aus einem höheren Cache oder direkt vom Orginal-Server anfordern.

4.2 Effizienz

Die zweite Hauptforderung neben Kohärenz an Web Caches ist Effizienz. Dies kann nur über eine hohe Treffer-Quote erreicht werden. Und da derzeitige Caches nur einen relativbeschränkten Speicherraum besitzen, besteht die Notwendigkeit,ältere Dokumente aus dem Speicher zu löschen. Der von Festplatten und RAM-Caches bekannte, und dort optimale Algorithmus Least Recently Used (LRU), ist beim Caching von WWW Objekten nicht optimal [Abr95]. Im Folgenden wird ein kurzer Überblicküber die Problematik gegeben und ein Vergleich verschiedener denkbarer Ersetzungsstrategien versucht.

LRU - Least Recently Used

Der klassische LRU-Ersetzungsalgorithmus löscht solange das least recently used Objekt aus dem Cache, bis genügend freier Platz für das neue Objekt geschaffen ist. LRU ersetzt so vielleicht auch mehrere kleine Dokumente, um Raum für ein grosses zu schaffen.

LRU/MIN

Diese Variante des LRU-Algorithmus versucht die Anzahl der zu ersetzenden Dokumente zu minimieren. Hier eine kurze formale Beschreibung analog [Abr95]: Liste L, Integer T, Grösse des neuen Objekts S
  1. T = S
  2. L = Liste alle Dokumente im Cache gleich oder grösser als T (L kann leer sein)
  3. Löschen des LRU-Dokuments von der Liste, bis L leer oder der freie Cache Platz grösser oder gleich T
  4. Falls freier Cache-Speicher ! S, dann T = T/2 und weiter mit 2.

LRU/THOLD

Diese Ersetzungsstrategie ist identisch zu LRU, nur werden Objekte, die grösser als einefestgelegte Threshold-Grösse sind, nicht gecachet. So wird verhindert, dass im Verhältnis zur Cache-Grösse sehr grosse Dokumente viele kleinere Dokumente verdrängen. Selbst wenn genügend freier Platz im Cache-Speicher existiert wird das Objekt nicht gespeichert.

LFU - Least Frequently Used

LFU ersetzt das least frequently used Dokument im Cache. Hier wird nicht über die Zeit seit dem letzten Zugriff, sondernüber die Häufigkeit des Zugriffs entschieden. Besonders populäre Dokumente werden so bevorzugt. Insbesondere für die Verwendung bei Proxies ist die LFU Ersetzungsstrategie günstiger als der LRU-Algorithmus [Wil96].

SIZE

Proxies können aber auch versuchen, die nötige Netzwerkbandbreite zu minimieren. SIZEist ein Ersetzungsalgorithmus, der mit Häufigkeit und Grösseüber die Ersetzung von Cache Objekten entscheidet.

LAT - Latency Estimation Algorithm

Dieser Algorithmus, näher beschrieben in [WA97], macht die Ersetzung eines Cache-Objekts direkt von der Download-Zeit abhängig. Eine WWW-Benutzer Umfrage des Graphic, Visualization & Usability Centers (GVU) ergab, dass Geschwindigkeit das Hauptproblem von WebBenutzern ist. Der LAT-Algorithmus ist direkt von diesem Ergebnis motiviert und ersetzt die Dokumente mit der kürzesten Ladeverbindungszeit. Die durchschnittlichen Verbindungs-zeiten werden serverweise auf Proxyseite gespeichert und so für einzelne Dokumente unterschiedlicher Grösse die Download-Dauer vorausberechnet.

HYB - Hybrid Algorithm

Auch der HYB-Algorithmus wird in [WA97] eingeführt und ausführlich verglichen. Ergeneriert nicht nur aus Ladezeit, sondern auch aus Grösse und Häufigkeit der Zugriffe einen Entscheidungsfaktor. In [WA97] wird dieser mit dem folgenden Ausdruck berechnet: (cser(i) + WB/bser)(niWN) /si
mit:
ni
Anzahl der Zugriffe auf das Dokument
i
seit es zuletzt in den Cache geladen worden ist
si
Grösse des Dokuments i in Byte
cser(i)
Zeit zum Öffnen einer TCP-Verbindung zum Server des Dokuments i
bser(i)
Bandbreite zum Server in Byte/Sec
WB, WN
Konstanten für die relative Gewichtung der Eingangsvariablen ni und bser(i)

Web-Caches besitzen eine Obergrenze, die auf die Anforderungsrate aus statistischen Untersuchungen zurückzuführen ist, für die Hit-Rate von 30%-50% bei theoretisch unendlicher Cache-Grösse [Abr95]. Ziel der Ersetzungsstrategie ist es, diese theoretischen Werte auch beirealen, kleineren Cache-Speichern zu erreichen. [Abr95] vergleicht die drei LRU Varianten bei ihrem Verhalten Cache-Speicher zu befreien und kommt zu dem Ergebnis, dass der klas-sische LRU schlechter als LRU/MIN und LRU/THOLD abschneidet. Dies liegt daran, dass er unabhängig von der Grösse eines Objekts z.B. für ein grosses Video von einem Benutzerviele kleinere Dokumente im Cache ersetzt. Daraus resultieren Cache-Fehler für viele Benutzer. LRU-THOLD hält die Cache-Grösse relativ klein, nur ist es schwierig, die effektivste Threshold-Grenze zu finden. Das Ergebnis hinsichtlich der optimalen Ersetzungstrategie fälltbei [Abr95] folgendermassen aus: use LRU-MIN until the cache size approached 100% of the available disk size, and the switch to LRU-THOLD with a threshold that is gradually reduced, until the cache size reaches a low-water mark.

Ein weiteres Ergebnis ist die Empfehlung, nonpersistente Client-Caches zusammen miteinem gemeinsamen Proxy zu verwenden. Bei persistenten Caches der einzelnen Clients fällt die Trefferrate des Proxy Caches mit der Zeit, da sich die Caches der einzelnen Client füllen und nur noch Fehlanfragen dort an den Second-Level-Proxy-Cache weitergereicht werden. Mit einer besseren Nutzung des Proxy-Caches kann Speicherplatz gespart werden, und aufgrund der grösseren Anzahl der Zugriffe kann der Proxy Server besserüber das Caching einzelner Dokumente entscheiden [Abr95].

Im Vergleich zwischen LRU- und LFU-Strategien zeigt sich, dass für den Einsatz bei ProxyCaches die Anzahl der Zugriffe auf ein Dokument statt der Zeit seit dem letzten Zugriff das bessere Entscheidungskriterium ist [Wil96]. Deshalb verwendet der Algorithmus HYB auch diesen Faktor [WA97]. Die Ergebnisse aus [WA97] belegen ausserdem, dass eine Ersetzungsstrategie, die nur auf die geschätzte Download-Zeit des Objektes (LAT) aufbaut, nicht optimal ist. Die Trefferrateliegt deutlich unter der, die z.B. SIZE bei gleicher Versuchsumgebung ergibt [WA97].

Der ebenfalls in [WA97] geprüfte Algorithmus HYB ergibt sowohl bei Trefferrate als auch der Download-Zeit, auf verschiedenen Datenbasen die besten Ergebnisse. Wahrscheinlich ist der Ansatz, mehrere Faktoren in die Ersetzungsentscheidung miteinzubeziehen, sinnvoll und kann die durchschnittlichen Werte verbessern und stabilisieren.Ausserdem darf der psychologische Effekt der grossen Variation der Download-Zeit auf den Benutzer nicht ignoriert werden. Bei Strategien, die die Zeit berücksichtigen, variierendie Download-Zeiten weniger, und dem Benutzer fällt gleichmässig längeres kurzes Warten weniger auf, als langes Warten bei einzelnen Seiten [WA97].

Alle hier vorgestellten Ersetzungsstrategien haben gemeinsam, dass sie über Objektattribute, wie Zeit, Zugriffshäufigkeit, Grösse, etc. die Verweildauer im Cache berechnen. Der Inhaltwird nicht bewertet. Dass es hier auch andere Ansätze gibt, zeigt der Abschnitt 5.3. Dort wird ein besonders für Datenbanken interessanter Ansatz des semantischen Cachings beschrieben.

12) Die Abbildung 4 zeigt das Zusammenspiel von Client und Server bei einem klassischem GET und die Ergänzungen, die ein conditional GET bietet.
13) beschrieben in RFC 2068

----------------------------------------------------------------
[home] [TOC] [prev] [next] [guestbook] [contact]          (c) SM