<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Squid_Caching</id>
	<title>Squid Caching - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Squid_Caching"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Squid_Caching&amp;action=history"/>
	<updated>2026-06-29T12:02:29Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Squid_Caching&amp;diff=36357&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „==Caching== *Squid kann auch Seiten zwischenspeichern. *Durch das Aufkommen von dynamischen Webseiten wird dieser Aspekt aber immer unwichtiger Image:squid2.…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Squid_Caching&amp;diff=36357&amp;oldid=prev"/>
		<updated>2022-09-26T14:24:41Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „==Caching== *Squid kann auch Seiten zwischenspeichern. *Durch das Aufkommen von dynamischen Webseiten wird dieser Aspekt aber immer unwichtiger Image:squid2.…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Caching==&lt;br /&gt;
*Squid kann auch Seiten zwischenspeichern.&lt;br /&gt;
*Durch das Aufkommen von dynamischen Webseiten wird dieser Aspekt aber immer unwichtiger&lt;br /&gt;
[[Image:squid2.jpg]]&lt;br /&gt;
==Sinnvolles Caching==&lt;br /&gt;
*Ein viel größeres Problem ist es, daß die Lebensdauer von Web-Seiten sehr unterschiedlich ist. &lt;br /&gt;
*Dadurch kann nie mit Sicherheit bestimmt werden, wann sich eine Seite ändert und dadurch veraltet ist und aus dem Cache gelöscht, bzw. beim Server neu angefordert werden soll.&lt;br /&gt;
*Es kann also immer vorkommen, daß der Cache ein veraltetes Dokument an den Client liefert.&lt;br /&gt;
*Durch verschiedene Strategien wird versucht, dieses Manko so weit wie möglich auszugleichen. &lt;br /&gt;
*HTTP bietet dazu zwei Möglichkeiten: Last-Modified und Expires.&lt;br /&gt;
*Mit der Antwort des Servers werden diese Information an den Proxy mitgeteilt. &lt;br /&gt;
*Mit Last-Modified wird angezeigt, wann das Dokument das letzte mal geändert wurde. &lt;br /&gt;
*Mit der Angabe Expires erhält der Client (in diesem Falle der Proxy) Informationen, wann er das Dokument als veraltet ansehen soll und vom Server neu anfordern muß.&lt;br /&gt;
*In einem HTML-Dokument werden diese Angaben im Header generiert.&lt;br /&gt;
*Dazu wird das META-Element benutzt.&lt;br /&gt;
*Die Informationen sehen dann wie im folgenden Beispiel aus: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;META HTTP-EQUIV=“Last-Modified“ CONTENT=“Thu Jan 1 12:00:00 GMT DST 1998“&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;META HTTP-EQUIV=“Expires“ CONTENT=“Thu Dec 31 12:00:00 GMT DST 1998“&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Allein die Expires-Angabe würde reichen, um den Cache in dieser Hinsicht zu optimieren. &lt;br /&gt;
*Jedoch sind diese Angaben optional und werden sehr selten eingesetzt. &lt;br /&gt;
*Außerdem ist es oft schwierig die Lebensdauer einer Web-Seite vorauszusagen. &lt;br /&gt;
*Daher sind die meisten Web-Seiten einfach so lange gültig, bis der Autor eine neue Version erstellt.&lt;br /&gt;
* Anders sieht es bei Last-Modified aus. &lt;br /&gt;
*Diese Angabe findet sich zwar selten explizit in HTML-Dokumenten, jedoch trägt jedes Dokument als Datei einen Zeitstempel,&lt;br /&gt;
*Dieser wird vomServer dann als Last-Modified-Header mitgeliefert.&lt;br /&gt;
*Die Proxy-Server wenden damit ein einfaches Verfahren ein, um die Lebensdauer eines Dokumentes zu „erraten“.&lt;br /&gt;
*Dabei wird zugrunde gelegt, daß die Wahrscheinlichkeit recht gering ist, daß ein recht altes Dokument in den nächsten Stunden geändert wird.&lt;br /&gt;
*Bei einem Dokument, welches dagegen erst vor kurzem geändert wurde, ist die Möglichkeit einer baldigen Aktualisierung eher vorhanden.&lt;br /&gt;
*Sofern ein Objekt keinen Expires-Header aufweist, erzeugt der Proxy-Server mit Hilfe des Last-Modified-Headers ein künstliches Verfallsdatum. &lt;br /&gt;
*Dazu bestimmt er das Alter der Datei und schlägt einen Prozentsatz dazu, der bei der Konfiguration des Proxy-Servers eingetragen wird *(Direktive refresh_pattern)&lt;br /&gt;
*Es holt frühestens nach Ablauf dieser Zeit von sich aus das Dokument erneut vom Server.&lt;br /&gt;
&lt;br /&gt;
*Ist beispielsweise ein Dokument zum Zeitpunkt der ersten Anfrage des Proxies bereits 150 Tage alt &lt;br /&gt;
*Und der Prozentsatz aus der Konfiguration ist 20%, &lt;br /&gt;
*So vergehen weitere 30 Tage, bis der Proxy-Server eine erneute Anfrage an den Originalserver stellt.&lt;br /&gt;
&lt;br /&gt;
==Hierarchisches Caching==&lt;br /&gt;
*Bei einigen Proxy-Servern ist es möglich, die Größe des Caches anzugeben, welcher im Hauptspeicher des Rechners liegt.&lt;br /&gt;
*Übertragene Objekte werden dort eine gewisse Zeit gehalten, um schnellere Antwortzeiten zu erreichen,&lt;br /&gt;
*Falls ein Objekt innerhalb kurzer Zeit von zwei verschiedenen Clients angefordert wird. &lt;br /&gt;
*Dabei kann meist über den Parameter TTL (Time-to-Live) die Zeitdauer angegeben werden, die ein Objekt maximal in diesem Cache gehalten wird. &lt;br /&gt;
&lt;br /&gt;
*Eine weitere Möglichkeit, die Performance zu erhöhen und geringere Antwortzeiten zu erhalten, ist das hierarchische Caching. &lt;br /&gt;
*Banal gesagt setzt man einen Proxy für den Proxy ein. &lt;br /&gt;
*Dadurch kann die Trefferquote auf Objekte nochmals verbessert werden. &lt;br /&gt;
*Dies macht besonders deshalb Sinn, da die Datenmengen  immer größer werden und es immer wieder zu Engpässen kommt.&lt;br /&gt;
*Das hierarchische Caching führt dabei zu einer Entlastung. &lt;br /&gt;
*Damit die Proxy-Caches miteinander kommunizieren können, wurde ein spezielles Protokoll entwickelt, das ICP (Internet Caching Protocol). &lt;br /&gt;
*Dabei schicken Proxy-Caches für das gewünschte Objekt Anfragen an benachbarte und in der Hierarchie höher stehende Proxy-Caches. &lt;br /&gt;
*Ist das Objekt in einem dieser Caches vorhanden, wird es übertragen, andernfalls wird es vom Originalserver geholt.&lt;br /&gt;
*Da das ICP auf UDP basiert, ist es sehr schnell und bedeutet somit einen vertretbaren Performanceverlust, der durch eine erhöhte Trefferquote mehr als ausgeglichen wird.&lt;br /&gt;
 [[Image:squid3.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Begriffe===&lt;br /&gt;
&lt;br /&gt;
{|Border=1 Cellpadding=3&lt;br /&gt;
|Neighbours	&lt;br /&gt;
|Dies sind alle Proxies, die ein Proxy kennt und mit denen er kommuniziert.&lt;br /&gt;
|-&lt;br /&gt;
|Siblings&lt;br /&gt;
|Die Geschwisterproxies. Sie liegen mit dem Proxy-Server auf einer Ebene. Siblings liefern in der Regel nur Objekte, die sie selbst im Cache haben,&lt;br /&gt;
|-&lt;br /&gt;
|Parents&lt;br /&gt;
|Übergeordnete Proxies. Sie liefern Objekte die sie selbst im Cache haben und leiten Anfragen an den Originalserver weiter.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Funktionsbeschreibung=&lt;br /&gt;
*Squid, der Internet Object Cache, ist jedoch mehr als ein einfacher Cache-Proxy. &lt;br /&gt;
*Durch die Unterstützung von Neighbor-Caches, die entweder als parent oder sibling verwendet werden, kann man einen Cache-Verbund aufbauen, der einen hohen Prozentsatz von Anfragen beantworten kann, ohne langwierige Internet-Zugriffe zu erfordern. &lt;br /&gt;
*Dieses Verfahren verwenden zum Beispiel einige der großen Internet-Provider (wie ECRC in München), um den Datentransfer wenn möglich auf der eigenen Netzwerkstruktur abzuwickeln und damit Kosten für externe Zugriffe zu umgehen. &lt;br /&gt;
&lt;br /&gt;
==Die Arbeitsweise von Squid ist einfach== &lt;br /&gt;
&lt;br /&gt;
*Eine Anfrage eines Clients wird zuerst auf die Zugriffsberechtigung untersucht, so kann man z.B. gewissen Rechnern einen Zugriff auf den Proxy ganz verbieten (siehe Konfiguration). &lt;br /&gt;
*Es wird versucht, die gewünschten Daten im lokalen Cache zu finden. Sollte dies fehlschlagen, werden andere Proxies im Cache-Verbund (sofern vorhanden), abgefragt.&lt;br /&gt;
*Sind die Daten vorhanden, wird ihre Aktualität geprüft. Sind die Daten veraltet, werden neue in den Cache geholt und an den Client weitergegeben.&lt;br /&gt;
*Bei aktuellen Daten wird das Neuladen übersprungen.&lt;br /&gt;
*Sind die Daten nicht vorhanden, werden sie in den Cache geladen und an den Client weiter-gereicht.&lt;br /&gt;
*Wie lange Daten im Cache verbleiben, ist abhängig von der Konfiguration (siehe dort)&lt;br /&gt;
*Eine Beschreibung der internen Abläufe wurde im Sinne der Übersichtlichkeit weggelassen.&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>