Caching ist ein wesentlicher Bestandteil eines Proxy-Servers, um die
Antwortzeiten zu verkürzen und die Bandbreitennutzung zu reduzieren. Der
HTTP-Header spielt dabei eine entscheidende Rolle, da er Informationen
enthält, die bestimmen, ob eine Antwort gecacht werden kann.
Cache-Control: Dieser Header enthält Direktiven
für das Caching, wie max-age, no-cache,
no-store und public/private.
max-age: Gibt die maximale Zeit (in Sekunden) an,
für die eine Ressource gecacht werden kann.
no-cache: Erzwingt die Validierung der Ressource
beim Server, bevor sie genutzt wird.
no-store: Verhindert das Speichern der Ressource im
Cache.
public/private: Gibt an, ob die Ressource
öffentlich oder privat gecacht werden darf.
Expires: Ein älterer Header, der ein Ablaufdatum
für die gecachte Ressource angibt.
ETag: Ein Validator, der eine eindeutige Kennung
für eine bestimmte Version der Ressource darstellt. Wenn die Ressource
geändert wird, ändert sich auch der ETag.
Last-Modified: Gibt das Datum und die Uhrzeit
der letzten Änderung der Ressource an. Der Proxy kann diesen Header
verwenden, um zu bestimmen, ob die gecachte Version noch aktuell
ist.
16.1.2 Unterschied zwischen
clientseitigem und serverseitigem Cache
Clientseitiger Cache: Dieser Cache befindet sich
auf dem Proxy-Server, der Anfragen von Clients bearbeitet. Er speichert
Kopien von Webinhalten, die von den Clients angefordert wurden, und
liefert diese bei zukünftigen Anfragen aus, ohne den Ursprungsserver
erneut zu kontaktieren.
Serverseitiger Cache: Dieser Cache befindet sich
auf dem Webserver und speichert häufig angeforderte Inhalte, um die
Leistung des Servers zu verbessern und die Last zu reduzieren.
16.2 Cache-Größe und
Speicher-Zuweisung
16.2.1 Konfiguration der
Cache-Größe
Die Cache-Größe bestimmt, wie viele Daten Squid auf der Festplatte
speichern kann. Eine angemessene Konfiguration ist wichtig, um eine
effiziente Nutzung der Ressourcen zu gewährleisten.
16.2.1.1
Beispielkonfiguration:
cache_dir ufs /var/spool/squid 10000 16 256
ufs: Das Dateisystem für den Cache. Andere Optionen
sind aufs oder diskd.
/var/spool/squid: Das Verzeichnis, in dem der Cache
gespeichert wird.
10000: Die Größe des Cache-Verzeichnisses in
Megabyte.
16 256: Die Anzahl der Verzeichnisse und
Unterverzeichnisse, die Squid im Cache-Verzeichnis erstellt.
16.2.2 Optimierung der
Speicherzuweisung
Squid bietet verschiedene Optionen zur Optimierung der
Speicherzuweisung:
cache_mem: Definiert den Arbeitsspeicher, der für
das Caching verwendet wird. Beispiel: cache_mem 256 MB
maximum_object_size: Setzt die maximale Größe eines
Objekts, das im Cache gespeichert werden kann. Beispiel:
maximum_object_size 512 MB
minimum_object_size: Setzt die minimale Größe eines
Objekts, das im Cache gespeichert werden kann. Beispiel:
minimum_object_size 0 KB
16.3 Cache-Hierarchien
16.3.1 Aufbau von
Cache-Hierarchien
Cache-Hierarchien ermöglichen es mehreren Proxy-Servern, miteinander
zu kommunizieren und Cache-Daten auszutauschen. Dies verbessert die
Effizienz und reduziert die Last auf den Ursprungsservern.
Parent Cache: Ein übergeordneter Cache-Server, der
Anfragen von untergeordneten Caches (Children) bearbeitet.
Sibling Cache: Ein Cache-Server auf derselben
Hierarchieebene, der Cache-Daten mit anderen Sibling-Caches austauschen
kann.
16.3.2 Interne und externe
Caches
Interne Caches: Befinden sich innerhalb eines
Unternehmensnetzwerks und dienen zur Reduzierung des externen
Datenverkehrs.
Externe Caches: Befinden sich außerhalb des
Unternehmensnetzwerks und können von verschiedenen Organisationen
gemeinsam genutzt werden.
16.3.3 Parent- und
Sibling-Caches
Die Konfiguration von Parent- und Sibling-Caches erfolgt in der Datei
squid.conf:
parent.cache.server: Die Adresse des
Parent-Caches.
sibling.cache.server: Die Adresse des
Sibling-Caches.
parent: Gibt an, dass es sich um einen Parent-Cache
handelt.
sibling: Gibt an, dass es sich um einen
Sibling-Cache handelt.
3128: Der Port, auf dem der Cache-Server Anfragen
entgegennimmt.
proxy-only: Gibt an, dass der Cache nur als Proxy
fungiert und keine Daten speichert.
Durch die richtige Konfiguration von Cache-Größe, Speicherzuweisung
und Cache-Hierarchien kann Squid als clientseitiger Cache effizient
arbeiten und die Leistung des Netzwerks erheblich verbessern.