Seite 1 von 1

HTML Archivator

Verfasst: 05.05.2006 02:15
von mgutt
Was machen, wenn man x-tausende (oder gar hundertausende) Beiträge in seinen Foren hat und auch die ältesten Schinken beim Aufruf die Datenbank unnötig belasten. Jeder Besucher, egal ob er über eine Suchmaschine auf die Seite kommt, wenn ein User nach alten Informationen stöbert oder wenn eine Suchmaschine Deine Seite crawlt. Jeder Beitrag muss mühevoll aus der Datenbank ausgelesen werden.

An diesem Punkt möchte ich nun ansetzen.

Die Idee:
- Themen, auf die länger als x Tage nicht mehr geantwortet wurde als feste HTML Datei in einem Cache speichern und bei Bedarf ohne jegliche Datenbankabfragen ausgegeben.
- Bei Antwort auf ein archiviertes Thema wird der Cache gelöscht und das Thema wieder erst nach x Tagen zur Archivierung freigegeben.

Dieses Thema habe ich testweise archiviert:
http://www.phpbb-de.com/viewtopic.php?t=1

Grundsätzlich merkt man keinen Unterschied. Die Seite scheint gerade "frisch" aus der Datenbank ausgelesen worden zu sein. Tatsächlich wurde sie aber vorher archiviert und ausgegeben wird nur eine reine HTML-Seite.

Jetzt erkenne ich aber bereits ein paar Probleme:
- eingeloggte User denken, sie wären ausgeloggt, denn das Archiv speichert nur eine Kopie der Seite, die ein Gast sieht. Also zeigt das Menü "Login", obwohl der vermeintliche User vielleicht eingeloggt ist.
- niemand erkennt, dass es sich um eine Kopie handelt. Ein Hinweis denke ich sollte zumindest als kleiner Text oder Icon darauf hinweisen.
- es wird keine Session generiert und and die Urls angehangen (Problem?!)
- wechselnde Informationen, wie Beitragszähler eines Users oder die Angabe seiner Emailadresse etc. könnten veraltet sein.
- diverse Mods könnten "undynamisch" werden. Soll heißen, dass wenn man z.B. zufällige oder wechselnde Informationen auf einer Themenseite hat, dann wird nur der zuletzt gemachte "Schnappschuss" der Seite angezeigt und die dargestellte Information könnte veraltet sein (im genannten Link wäre das z.B. das Datum und die Uhrzeit ;) )

Verschiedene Wege der Ausgabe:
1. Insgesamt wirkt das nun auf mich so, dass man den Mod am besten nur dann greifen lassen sollte, wenn ausgeloggte User sich im Forum bewegen (wie Gäste, Suchmaschinenroboter, etc.)

2. Ein weiterer Lösungsweg wäre nur bestimmte Bereiche der Seite zu archivieren. z.B. nur die Beiträge unabhängig von Kopf und Fuß der Seite, wo wechselnde Informationen möglich sind. Aber damit erreicht man kaum das maximal mögliche Potential eines solchen Mods.

3. Oder man ersetzt die archivierte Seite mit einem subSilver "Light" Template, welches nur abgespeckte Details darstellt, wie Username, Text, wann gepostet wurde, etc.) Also wirklich nur diese Details die nicht wechselnd sind. Derzeit gibt es ein solches Template z.B. hier sehen: (das Template hat aber einen anderen Hintergrund)
http://ptifo.clanmckeen.com/viewtopic.php?t=2656
Wobei da sich dann das Problem ergibt, dass die Seite für Gäste sehr leer und "billig" wirkt.

Entwicklung:
Ich teste erstmal ein wenig umher und frage mich wie interessant so ein Mod für die phpBB-Welt sein könnte oder wer noch anregende Ideen für die Umsetzung haben könnte.

Verfasst: 05.05.2006 23:09
von karstenkurt
Was passiert denn, wenn ich auf einen solchen Beitrag antworte?

Verfasst: 06.05.2006 02:31
von mgutt
In dem Moment soll der Cache wieder gelöscht werden und ein "normaler" Beitrag entsteht. Dieser ist dann wie jeder andere Beitrag wieder für X Tage aktiv. Nach erneutem Ablauf der X Tage wird er dann erneut archiviert. So stelle ich mir das vor, außer jemand hätte dafür andere Anregungen.

Gruß

status

Verfasst: 05.07.2006 11:49
von karlegon
Hallo

suche genau nach solch einem Mod. Wie ist der Stand? Gibt es andere Möglichkeiten alte Beiträge automatisch in ein Forum auf einem anderen Server zu verschieben?
Vielen Dank!

Verfasst: 05.07.2006 22:44
von bazillus
Hi, die Idee dürfte nicht neu sein, aber warum die komplette Seite speichern und die damit verbundenen Probleme? Ich denke man wird auch auf Themen zugreifen können, wo man sonst keine Berechtigung hat, da diese ja direkt über eine Datei aufgerufen werden können.

Ich würde nur eine cachen der DB-Abfragen durchführen und das Erstellen des Caches ähnlich wie bei der Prune-Funktion ablaufen lassen.

Dazu eine weitere Spalte in der Posts/Topic-Tabelle worin der Zeitpunkt der Cacheerstellung vermerkt wird. Wenn die Zeile leer ist, kann die Funktion die Threads finden, die noch gecacht werden müssen (z.b. nach x Tagen). Dazu eine Abfrage in der posting.php, die beim Absenden eines Beitrages diese Zeile leert.

Beim anschauen der Seite wird dann geprüft ob ein Cachezeitpunkt vorhanden ist, wenn ja wird die dazugehörige Datei geladen, wenn nicht wird die normale Abfrage ausgeführt.

Ma ein anderer Ansatzpunkt ;)


/edit: Warum sagt mir niemand das der Thread nur ausgebuddelt wurde? - Sry

Verfasst: 29.07.2006 14:30
von Schwabenpfeil!
Hallo,

auch wenn das eigentliche Thema inzw. schon fast 2 Jahre alt ist, wie ist denn der Stand der Dinge? Ich bin sehr an einer Möglichkeit interessiert, Themen vernünftig zu archivieren und damit die DB zu entlasten. Oder kennt vielleicht jemand eine andere Möglichkeit als diese hier?

Gruß
Schwabenpfeil!

Verfasst: 29.07.2006 14:58
von S2B