Das Haupteinsatzgebiet von Squid ist der Cache-Proxy, weshalb er auch häufig nur als Webcache oder Cache bezeichnet wird. Das wichtigste Kriterium für einen guten Cache ist neben der Verfügbarkeit und Hit-Rate die Aktualität der enthaltenen Daten. Die folgenden Abschnitte befassen sich genau mit diesem Problem.
Die Aktualität wird für jedes Objekt vor dem Versenden berechnet. Das Ergebnis der Berechnung kann nur einen von zwei Zuständen haben:
Das Objekt ist noch aktuell: fresh
Das Objekt ist abgelaufen: stale
In die Berechnung fließen folgende Daten ein:
| LM | Im Header mitgeliefertes Datum der letzten Änderung (Last Modified) |
| EX | Im Header mitgeliefertes Ablaufdatum eines Objekts (Expire) |
| NOW | aktuelles Datum (jetzt) |
| OBJ_Date | Datum der Speicherung im Cache |
| MIN | Mindesthaltbarkeit im Cache |
| MAX | Maximale Haltbarkeit im Cache |
| PERCENT | Haltbarkeitsfaktor (siehe Berechnung) |
| Age | Zeit, die ein Objekt bereits im Cache ist (Age = NOW - OBJ_Date) |
| LM_Age | Objektalter zum Zeitpunkt des Abspeicherns (LM_Age = OBJ_Dat - LM) |
| LM_FACTOR | Altersfaktor des Objekts (LM_FACTOR = Age / LM_Age) |
Jedes Objekt im Cache wird bis zum Zeitpunkt X als aktuell (fresh) angesehen.
Die folgende Grafik sollte den Algorithmus etwas verdeutlichen:
Falls Ihnen die ganze Rechnerei zu komplex war, kurz zusammengefasst gilt:
''Je häufiger sich ein Objekt ändert, desto häufiger wird es auch vom Proxyserver auf seine Aktualität geprüft. Wobei es frühestens nach der Zeit MIN geprüft wird und spätestens nach Ablauf der Zeit MAX geprüft werden muss!''
Das folgende Diagramm zeigt den Ablauf einer Cache-Anfrage:
Die Prüfung erfolgt, indem der Proxyserver eine If-Modified-Since Anfrage an den Webserver stellt und dabei das Datum der letzten Änderung seines Cache-Objekts (OBJ_Date) mitsendet.
Der Webserver prüft, ob das Objekt, das er besitzt, aktueller ist und sendet entweder nur einen Statuscode 304 (not modified), wenn das Objekt unverändert ist oder mit Statuscode 200 (OK) das neue Objekt zurück. So wird das Objekt nur dann neu übertragen, wenn es wirklich geändert wurde.