SquidCache mit Forum/BB dahinter

Apache, Lighttpd, nginx, Cherokee
theomega
Userprojekt
Userprojekt
Posts: 696
Joined: 2003-01-27 14:36

SquidCache mit Forum/BB dahinter

Post by theomega »

Hallo Leute,
nehmen wir mal folgende Situation an:
Auf einem Apache läuft eine Forensoftware wie das PHPBB (eigentlich ziemlich egal). Ungefähr 90% aller Hits auf dieses Forum werden von "Gästen" also nicht angemeldeten/eingeloggten Benutzern durchgeführt. Das erzeugen der einzelnen Seiten braucht seine Zeit, vor allem die Threads weil das Parsen des BB-Codes nunmal Zeit braucht.
Deshalb soll ein Squid vorgeschaltet werden, der die Inhalte cacht.

Dabei treten jedoch folgende Probleme auf:
1. Die Inhalte dürfen nur für Gäste (s.o.) gecacht werden. Für den Rest ist ja jede Seite personalisiert (hier zum Beispiel Logout [theomega] usw), für angemeldete Benutzer darf also nicht gecacht werden. Das liese sich evtl über entsprechende Headers regeln, wobei ich nicht genau weiß wie.
2. Der Cache muss für bestimmte Seiten neu aufgebaut werden können: Jedesmal wenn ein neuer Beitrag erstellt wird müssen bestimmte Seiten gelöscht werden. Das liese sich evtl auch noch über Headers regeln, weiß aber auch hier nicht genau wie!
3. Diverse Statistiken gehen schief: Zum Beispiel die anzeige wieviele Gäste online sind. Das funktioniert natürlich nur wenn die Anfragen bis zum Apache durchkommen und nicht wenn sie vom Squid schon direkt beantwortet werden. Genauso macht der Zähler wie oft ein Thread angeschaut wurde Probleme: Jedesmal wenn die Antwort vom Squid kommt wird nicht hochgezählt.

Vor allem das 3. Problem macht mir sorgen: Kann man das irgendwie umgehen oder ist unter diesen Umständen kein Caching möglich?

Dank euch
TO
r. u. serious
Posts: 88
Joined: 2006-06-10 14:17

Re: SquidCache mit Forum/BB dahinter

Post by r. u. serious »

Hmm, dü müßtest mal checken wie das mit den Sessions für Gäste ist. Und was passiert wenn sich die Leute dann einloggen, sonst laufen nachher mehrere User mit derselben Session rum...
3. Diverse Statistiken gehen schief: Zum Beispiel die anzeige wieviele Gäste online sind. Das funktioniert natürlich nur wenn die Anfragen bis zum Apache durchkommen und nicht wenn sie vom Squid schon direkt beantwortet werden. Genauso macht der Zähler wie oft ein Thread angeschaut wurde Probleme: Jedesmal wenn die Antwort vom Squid kommt wird nicht hochgezählt.
Das ist ja der Grund (teilweise jedenfalls) warum das erzeugen der php-seite länger dauert. Die Sessions und die Hits etc. was im Forum angezeigt wird, wird alles von der Forensoftware gehandelt.

Du solltest dir vermutlich eher einen in PHP geschriebenen Seitencache anschauen. Der ist zwar lange nicht so performant wie ein Squid, aber dafür hast du mehr Kontrolle, und kannst die eben programmieren welche Tile gecached sein sollen, und welcher Code immer ausgeführt werden soll.

Die Frage bleibt aber offen, wie snnvoll das ist, da ein Forum, gerade ein gut besuchtest, aus unheimlich vielen verschiedenen Seiten besteht, wovon gerade die aktuellen auch häufiger geändert werden. Sprich, es kann gut sein, dass du ein sehr schlechtes Cache-Hit zu Cache-Miss Ratio haben wirst.