Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Konzept für einen kompletten dateibasierten Webseiten-Cache (https://www.delphipraxis.net/93564-konzept-fuer-einen-kompletten-dateibasierten-webseiten-cache.html)

Matze 7. Jun 2007 14:20


Konzept für einen kompletten dateibasierten Webseiten-Cache
 
Moin zusammen,

hin und wieder bin ich am Überlegen, ob ich den Inhalt meiner Webseite komplett in Dateien cachen sollte, Grund ist der, dass die Datenbank gelegentlich nicht erreichbar ist (dies liegt vorwiegend an enormen Spamwellen zur Zeit). Somit würde der Cache
  1. die Datenbank ein klein wenig entlasten (vernachlässigbar)
  2. dafür sorgen, dass die Seite auch weiterhin erreichbar ist, auch wenn die Datenbank dies nicht sein sollte
Ich bin momentan zeitlich sehr eingespannt, aber möchte dennoch mal grob einen Entwurf haben, wie so etwas aussehen könnte oder ob ich's gleich bleiben lassen sollte.

Ich sehe folgende Hürden bei diesem Vorhaben:
  1. Dynamischer Seiteninhalt führt zu einem großen Cache (Webspace habe ich jedoch momentan noch genügend)
  2. Daten, wie die aktiven Sitzungen, Statistiken etc. müssten vor bei einem Datenbankausfall in Dateien ausgelagert und bei einer erneuten erfolgreichen Verbindung zur Datenbank in diese übertragen werden.
In letzterem sehe ich das Hauptproblem des ganzen.

Den Bloginhalt könnte ich in einer überschaubaren Ordnerstruktur verwalten, was kein Problem sein sollte, zumindest nicht das Speichern. Doch lese ich beispielsweise aus der Datenbank die Anzahl aller Blogeinträge aus, um die Seitenzahlen zu berechnen. Das ohne Datenbank zu bewerkstelligen könnte schwer werden, da die Abfragen mit Filtern und ähnlichem mit der Datenbank sehr einfach gehen und ohne weiß ich gar nicht, wie man das macht. Evtl. die Ergebnisse der getätigten Abfragen speichern (Arrays extern zu cachen stellt für mich kein Problem dar), denn diese ändern sich ja nicht allzu häufig (bis auf die Statistik und Sitzung-Geschichte).

Ich persönlich würde fast sagen, es ist mit vertretbarem Aufwand nicht möglich, auf die Datenbank zu verzichten, doch vielleicht könnte ihr mir ein paar Tipps geben. Mir ist das auch nicht sonderlich wichtig, es wäre aber ein nettes Feature.


Sommerliche Grüße wünscht
Matze

mkinzler 7. Jun 2007 14:26

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
Auf welche Technik basiert deine Seite für php gibt es ja verschiedene Lösungen für diese Problem:

http://pecl.php.net/package/apc
http://turck-mmcache.sourceforge.net/index_old.html

Matze 7. Jun 2007 14:31

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
Hallo Markus,

was du verlinkt hast, cacht lediglich ausgewerteten PHP-Code und das benötige ich nicht. Welche Technik ich nutze, kann ich dir nicht sagen, eben eine kleine Template-Klasse, ähm jo, normales PHP (kompatibel zur Version 4) eben. :gruebel:

Arrays, dessen Inhalte aus der Datenbank kommen, cache ich bereits in Dateien (Konfiguration und ähnliches, was sich kaum ändert). Ich denke, über intelligentes Cachen der Ausgelesenen Daten (das sind dann im Prinzip Arrays) und Auswerten derselben lässt sich das irgendwie realisieren.

f.siebler 7. Jun 2007 14:35

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
hi,

also es gibt die möglichkeit den output in eine variable zu schreiben, diesen inhalt dann in einer datei ablegen und gut ist... und das ganze mit einem timestamp versehen, und regelmäßig ersetzten... eigentlich ganz einfach, geht am besten mit einer include datei die direkt als erstes eingebunden wird...

mkinzler 7. Jun 2007 14:36

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
Mit Technik meine ich PHP/ASP/ASP.Net...
PHP-Caches cachen ja ganze Seiten, so daß wenn die selbe Anfrage kommt diese aus dem Cache beantwortet wird.

Matze 7. Jun 2007 14:39

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
Hallo

Zitat:

Zitat von f.siebler
also es gibt die möglichkeit den output in eine variable zu schreiben, diesen inhalt dann in einer datei ablegen und gut ist... und das ganze mit einem timestamp versehen, und regelmäßig ersetzten... eigentlich ganz einfach, geht am besten mit einer include datei die direkt als erstes eingebunden wird...

Ich habe eine Klasse, die genau auf diesem Wege Arrays cacht, das ist also kein Problem.

Zitat:

Zitat von mkinzler
PHP-Caches cachen ja ganze Seiten, so daß wenn die selbe Anfrage kommt diese aus dem Cache beantwortet wird.

Ok, aber das wäre in der Art auch kein Problem, doch muss ich die Sitzungen irgendwie verwalten können. Man sollte sich auch in der Zeit anmelden und loskommentieren können. Schön wäre es auch, wenn die Daten für die Statistik (User-Agent & Co) nicht verloren gehen.

DGL-luke 7. Jun 2007 14:48

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
Hallo,

dann ist das, was du willst, doch ein ersatz für die mysql-datenbank.

ich würd dafür am besten eine sqllite-db vorhalten, mit allem, was du brauchst, wenn die db grad nciht da ist - userdaten etc.
du brauchst in deinem source dann immer einen fallback - für anmeldung, für comments, etc.
Neuer content wird dann zwischengespeichert bis die db wieder "da" ist.

und halt n statischen cache, der solange die db da ist, immer mit jeder änderung der seite (die du als admin ja immer anstößt bzw. ein user der kommentiert o.ä.) aktualisiert wird.

himitsu 7. Jun 2007 14:58

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
wenn aber eh alles aus der DB in der Cache ebenfalls drin wäre,
warum dann nicht gleich auf MySQL verzichten?

es gibt ja Dateibasierende Datenbanken ... die geringste Aufwand wäre dann der, daß einfach die MySQL-Anfragen an die Text-DB umgeleitet werden würden.

Matze 7. Jun 2007 15:03

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
Moin,

also eine zweite Datenbank möchte ich beim besten Willen aber nicht einführen. :)

@himi: Ich denke das Auslesen aus der DB ist bei komplexeren Abfragen deutlich schneller, als Arrays auszuwerten. ich möchte daher nur den ganzen Inhalt aus der DB lesen, wenn diese nicht erreichbar ist.

DGL-luke 7. Jun 2007 15:20

Re: Konzept für einen kompletten dateibasierten Webseiten-Ca
 
...du kannst ja die komplette mysql-db auf eine dqllite-db mirrorn - aber eben immer nur schriebenderweise, und lesend erst dann, wenn die mysql-db schlappmacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz