Alexander Brock: HTTP-Cache

Beitrag lesen

Hallo Freunde des gehobenen Forumsgenusses,

Ja, wenn diese Aufrufe innerhalb _einer_ Funktion stattfinden. Wenn sie über das ganze Script verteilt sind, müsste man dann zu Methoden greifen, wie: jedes Mal ein neues Objekt erstellen, eins global ablegen, sich selbst ein Singleton erstellen, ...

Ich habe jetzt ein PHP4-kompatibles Singleton mittels deiner Methode aus https://forum.selfhtml.org/?t=129839&m=839507 gemacht.

Ich würde das vielleicht so implementieren: Die Klasse HTTPCache kümmert sich um den HTTP-Vorgang. Zum Ablegen der Seiten bedient sich HTTPCache einer "Storage-Engine" (Lass dich von dem Begriff nicht erschrecken, der klingt gefährlicher als er ist.) Die Storage-Engine weiß nichts weiter von HTTPCache. Sie stellt nur Methoden wie init() (oder Parameterübergabe im Konstruktor), get() und store() zur Verfügung. HTTPCache muss auch nicht von der Storage-Engine erben. Er erweitert nicht deren Funktionalität sondern bedient sich ihrer nur. Damit bleibt sie beliebig austauschbar. Du müsstest sonst jedes Mal von einer anderen Storage-Klasse erben.

Im Moment lasse ich die Storage-Engine (man, klingt das cool *g*) von HTTPCache erben, dann muss nichtmal HTTPCache beibringen, unterschiedliche Storage-Engines zu verwenden, sondern man muss nur noch die gewünschte Storage-Engine einbinden.

Die Datei-System-Storage-Engine (die einzige, die es im Moment gibt) hat jetzt eine Methode getInstance(), die ein Objekt von sich selbst zurückgibt (gibt die eigentlich das Objekt oder eine Referenz zurück?).

Nehmen wir mal an, du hättest noch nichts da. [...]

Eigentlich gibt es schon eine Storage-Engine, und der HTTP-Teil funktioniert auch :-)

Ich überlege gerade, ob eine Storage-Engine, die MySQL verwendet großartig Sinn ergeben würde, aber das Lesen und Einfügen von Blobs soll ja furchtbar lahm sein, der einzige Vorteil wäre, dass man nicht die komplette Liste aller URLs in den Speicher kopieren muss.

Das wäre aber wahrscheinlich erst bei tausenden von URLs, von denen man immer nur ganz wenige braucht schneller.

Ich hab das ganze mal wieder hochgeladen, damit ihr es euch angucken könnt:

http://alexanderbrock.de/temp/cache/

Ich habe Softlinks auf die Dateien gesetzt, aber jetzt werden sie mir nur zum Herunterladen angeboten, kann man das per .htaccess einstellen, dass die Dateien mit Syntaxhighlighting ausgegeben werden?

Gruß
Alexander Brock