Verwaltung des Cache

Vermeiden, daß der Server unnötige Arbeit leisten muß

Das Cache-System: wie man eine dynamische Site erzeugt, ohne es mit der Dynamik zu übertreiben.

In den vorangegangenen Lektionen haben wir damit begonnen, einige Templates zu basteln. Unsere Website verspricht ein überwältigender Erfolg zu werden. Lassen Sie uns nun einen Moment innehalten und an die Nerven unseres armen Computers denken. In dieser Lektion erfahren Sie weder amüsante noch essentielle Dinge. Sie können die Gelegenheit auch zu einem Nickerchen nutzen...

Zusammenfassung für Eilige: ändern Sie in der aufzurufenden Datei tutorial.php3 den Eintrag $delais=0; in $delais=3600;

...

Wenn eine Seite von SPIP angefordert wird, schaut es zuerst nach, ob es diese Seite schon einmal erzeugt hat. Wenn die angeforderte URL http://meine_site.net/tutorial.php3?id_article=12 ist, schaut SPIP in sein CACHE/-Unterverzeichnis, um festzustellen, ob die Datei existiert; falls ja, vergleicht es das Alter der Datei mit dem Wert, der für $delais in der Datei tutorial.php3 spezifiziert wurde.

In unserem Beispiel hatten wir $delais=0; festgelegt, was jedesmal eine systematische Neuerzeugung der Seite bewirkt, wenn sie aufgerufen wird. Lassen Sie uns das zu $delais=3600; ändern (die Zeit wird in Sekunden angegeben).

Damit wird unsere Seite nur neu erzeugt, wenn ein Besucher sie anfordert und die gecachte Version älter als eine Stunde (d.h. 3600 Sekunden) ist. Ist sie das nicht, liest SPIP einfach den Inhalt der gecacheten Datei  [1] und gibt das Ergebnis zurück, ohne mit der Datenbank Kontakt aufzunehmen (abgesehen davon, daß ein Zugriff in die Statistik eingetragen wird).

Wie sollte der Timeout-Wert $delais eingestellt werden, um die Leistung des Servers zu optimieren? Es gibt keine Patentlösung, aber stellen Sie ohne weiteres einen Delay-Wert von einem Tag (d.h. $delais=24*3600;) oder mehr für Artikel und Rubriken ein. Die wichtigsten Navigationsseiten können ein kürzeres $delais haben (beispielsweise 20 Minuten oder eine Stunde), wenn Ihre Site auf häufige Veröffentlichung neuer Inhalte und syndizierter Seiten reagieren soll. Wenn Sie sich Ihren Server mit anderen Benutzern teilen, denken Sie auch an diese und stellen Sie keinen kurzen Delay für Seiten ein, die sich selten ändern: dies verriete einen Mangel an Feingefühl, da bei den umfangreichen Artikeln oder Übersichten die Erzeugung von Seiten einige Sekunden dauern kann, was dann nur den Zugriff auf Ihre Seiten verlangsamt.

Wie kann eine Aktualisierung erzwungen werden? Wir haben soeben beschlossen, auf einer Seite eine extrem lange Delay-Zeit einzustellen, und dann finden wir einen Rechtschreibfehler. Wie stellen wir es an, diesen Fehler, nachdem wir ihn im privaten Bereich berichtigt haben, sofort von der öffentlichen Site zu entfernen?

-  Klicken wir aus dem privaten Bereich («Redaktion» → «Artikel» → betreffender Artikel bzw. «Redaktion» → «Rubriken» → betreffende Rubrik) auf den mit einem Lupen-Symbol markierten Button «Online ansehen». Damit lösen wir die Neuerzeugung der Seite nach Maßgabe der #URL_ARTICLE des betreffenden Artikels bzw. der #URL_RUBRIQUE der betreffenden Rubrik aus. Dies ist die üblichste Methode der Aktualisierung.

-  Im Abschnitt «Konfiguration → Sitecache löschen» des privaten Bereichs löscht der Button «Cache leeren» alle gecacheten Dateien. Dies ist nützlich, wenn Sie substantielle Modifikationen durchgeführt und eine sehr komplexe Site haben; anderenfalls vermeiden Sie es lieber.

-  Eine weitere einfache Methode ist die Benutzung des Buttons «Seite aus Cache löschen», der für Administratoren auf der öffentlichen Seite zur Verfügung steht. Dieser Button ist nur dann zu sehen, wenn Sie vorher dem privaten Bereich von derselben Maschine aus einen Besuch abgestattet haben - dadurch wird ein Cookie auf Ihre Maschine geschrieben, das Sie identifiziert.

Zurück zum Kontext: Wir kehren an dieser Stelle zur Konzeption des Kontexts zurück. Wenn das Template mit einem Kontext von id_article, id_rubrique oder id_breve aufgerufen wird, ist ein weiterer Button für Sie sichtbar, wenn SPIP das Verwaltungs-Cookie entdeckt. Seine Bezeichnung ist «Artikel (bzw. Rubrik oder Meldung) bearbeiten»; er führt Sie direkt zu der korrespondierenden Seite im privaten Bereich, wo Sie den Artikel editieren können.

Letzte Details:
-  Aus einleuchtenden Gründen bewirkt die Suchmaschine keine Aktualisierung des Cache, und die Forum-Seiten werden aktualisiert, sobald ein neuer Beitrag übermittelt wird.
-  Das CACHE-Verzeichnis der Site ist in 16 numerierte Unterverzeichnisse aufgeteilt (0, 1, 2, ... 9 und A, B, ... F), in denen die gecacheten Dateien zufällig verteilt sind; dies nennt man «den Cache-Hash», und es wird hier nur der Vollständigkeit halber erwähnt.
-  Die gecacheten Dateien werden auch verwendet, wenn die Datenbank nicht arbeitet (weil sie beispielsweise «abgestürzt» ist); das garantiert, daß die Site auch während eines Ausfalls des MySQL-Servers erreichbar bleibt.

Anmerkungen

[1für die technisch begabten: tatsächlich handelt es sich dabei um ein in der korrespondierenden Datei enthaltenes PHP, das die Ausführung von Code aus dem Cache ermöglicht.

Autor wshSchlegel Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, corsu, Deutsch, English, Español, italiano, Português, русский, slovenčina, Türkçe, українська