#1
| ||||
| ||||
Caching, wie realisiert?Hi, nehmen wir eine Forensoftware. Wie wird da das Caching realisiert und was versteht man darunter genau? Beim vB3 finde ich z.B. cache_templates(); oder cache_permissions(); Am liebsten wäre mir ne kurze Erklärung von euch und ein Link zu einer ausführlichen Beschreibung |
#2
| ||||
| ||||
Meine Frage war für mich sehr deutlich: Wie wird da das Caching realisiert und was versteht man darunter genau? Es soll ja sicherlich nicht bedeuten, dass häufig verwendetes in eine txt-Datei gelagert wird |
#3
| |||
| |||
Templates hatten wir hier vor kurzem: http://www.boardunity.de/showthread.php?t=1463 Das compilierte Template wird als *.php gespeichert und dann eingebunden. Wie kommt auf deine Template-Klasse ein. Denkbar wäre z.B. ein einfaches include. Das vorparsen von Beiträgen finde ich persönlich nicht so gut. Ist sehr umständlich, wenn man öfter mal einen neuen BBCode hinzufügt, oder entfernt oder ändert. __________________ Patrick Gotthardt Patrick Gotthardt on Software |
#4
| ||||
| ||||
Mal kurz und knapp, ich hoffe aber trotzdem einigermaßen verständlich (das folgende bezieht sich auf mein nBB, lässt sich aber bestimmt auch auf andere Forensystem übertragen): Caching bei Templates: In Templates stehen Dinge wie: Code: {if logged_in()} Hallo {$this_user['name']} {else} Hallo Gast {/if} PHP-Code: Alternativ ist es auch möglich, die Templates einmalig zu php-Code zu kompillieren und in eine Datei zu schreiben, sodass die Templates bei keinem Seitenaufruf kompilliert werden müssen. Caching von Benutzerrechten: Beim Aufrufen eines Themas wird vieles überprüft:
PHP-Code: Caching bei Smilies und BB-Codes: Ein Thema besteht aus mehreren Beiträgen, und jeder Beitrag muss auf Smilies und BB-Codes überprüft und ggf. umgewandelt werden. Damit nun nicht für jeden Beitrag zwei Datenbankabfragen ausgeführt werden müssen, geschieht dies nur beim ersten Beitrag. Dort werden Smilies und BB-Codes ausgelesen und in einem Array zwischengespeichert. Bei allen weiteren Beiträgen werden nun nicht mehr die Smilies und die BB-Codes aus der Datenbank gelesen, sondern die Werte aus dem Array genommen, was bei 20 Beiträgen (20-1)*2 = 38 Datenbankabfragen spart. Ich hoffe, dass das so verständlich war, für nähere Details einfach in den Quellcode gucken. Ich denke aber, dass das hier schonmal ein guter Einblick in verschiedene Arten des Cachings war. __________________ Hendrik Richter php-Programmierung | Hendis Blog | lolomat | Gratis Downloads |
#5
| ||||
| ||||
Hey Hendrik, danke, auf so eine Antwort hatte ich gewartet Trotzdem nehme ich dein Angebot gerne an und schaue mir den Quelltext deines Forums an. Da kann ich sicherlich noch was lernen grüße, |
#6
| ||||
| ||||
Zitat:
ich würde darunter zb verstehen, dass man den search - replace teil bei den smilies und bb codes in einer datei speichert, welche sich nur ändert, wenn man die bb codes abändert. so hab ich das bei mir realisiert. sind zwar insgesamt nur 2 querys pro thread seite aber immerhin! mfg __________________ Björn C. Klein Welt-Held! PunkRockNews.de |
#7
| ||||
| ||||
Es gibt viele Arten von Caching. Die BBCodes können auch direkt in HTML umgewandelt und gespeichert werden. Bei Bedarf kann dieser wieder umgewandelt werden. Eine andere Möglichkeit ist, welche nur in wenigne Fällen auf Foren zutrifft, die Speicherung des kompletten HTML Codes. Wenn eine Änderung auftritt oder wenn ein bestimmter Zeitraum abgelaufen werden, wird dann der Quelltext erneut frisch erstellt, sonst aus der Datei/Datenbank ausgelesen. |
#8
| |||
| |||
Schau Dir doch mal die template-cache*.php aus dem /contrib-Ordner von phpBB 2.0.x an. Es gibt je eine Template-Klasse für das Cachen über Dateien und die Datenbank. phpBB 2.2 geht noch einen Schritt weiter und cacht auch Dinge wie allgemeine Einstellungen, Benutzereinstellungen, Rechte, ... Schau einfach in den Source. Off-Topic: Ist Open Source nicht toll |
#9
| ||||
| ||||
Caching innerhalb eines Seitenaufrufes wie weiter oben bereits ausführlich beschrieben, empfinde ich persönlich als selbstverstänlich. Wer bei jedem Beitrag innerhalb eines Threads jedesmal Smilies o.ä. abfragt, der hat in meinen Augen nicht allzu viel Ahnung von PHP und Co. Ein gutes Beispiel für Caching ist auch das Tritanium Bulletin Board 1.x, welches Daten in Dateien speichert. Hier kann es in bestimmten Situationen vorkommen, dass eine Datei innerhalb eines PHP-Scripts des öfteren aufgrufen werden muss (mir fällt gerade kein Beispiel ein!). Jedes Mal, wenn der Inhalt dieser Datei ausgelesen werden müsste, prüft das Script, ob er bereits in einem assoziativem Array, welches als Schlüssel en Namen der Datei hat, gespeichert ist. nur falls dem nicht so ist, wird die Datei geladen. Ich selbst verwenden zum Cachen von Datenbankinhalten, etc. in Dateien den PHP-Befehl serialize(). So kann ich die Daten (meisten Arrays oder Strings) exact so, wie sie in PHP waren, in Dateien cachen und kriege sie genauso wieder zurück, ohne implode(), explode() oder ähnliche Funktionen! __________________ Fabian Michael "Ein Tag, an dem du nicht lächelst, ist ein verlorener Tag." - Charlie Chaplin Wiki |
#10
| |||
| |||
Cachen kann man auf sehr, sehr vielen unterschiedlichen Ebenen. Als Einstieg empfehle ich diese Präsentation von Ulf Wendel: http://caching.ulf-wendel.de/ Wichtig ist immer den Flaschenhals zu erkennen, und dort mit dem Caching anzusetzen. Und wie so oft ist es besser man misst nach (bspw. mit XDebug für php, oder mit apache bench für generelle Zugriffszeiten, usw.), anstatt dass man nach intuitiven Vermutungen an den falschen Stellen optimiert... |
Stichworte |
- |
Themen-Optionen | |
Thema bewerten | |
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Caching in Forensoftware's und Content Management Systemen | codethief | Programmierung und Datenbanken | 2 | 21.09.2004 15:13 |
Caching von Index-Seiten | itst | Web Design und Grafik | 26 | 20.07.2004 17:31 |