CodeIgniter: Applikationsseitiges Datenbank-Caching

CodeIgniter hat eine “Database Caching”-Klasse, aber die habe ich auf die Schnelle nicht verstanden – und es musste schnell gehen 🙂

CodeIgniter hat auch einen generischen Cache, und der ist schnell verstanden. Zu beachten: Datenbank-Queries sind nicht cachebar, “nur” deren Result-Sets. Das sieht dann bsplw. so aus (hier als filebasierter Cache):

Danke, Marcel!

UPDATE:

Für schnelleres Austauschen des Caching-Mechanismus scheint sich das Folgende anzubieten – allerdings gibt es einen Bug: Wenn der Adapter (im Beispiel unten APC) nicht verfügbar ist, wird nicht der Fallback genommen m(

Deshalb: Entweder vorher checken, welche Treiber installiert sind – oder bei filebasiertem Caching bleiben, das scheint das zuverlässigste.

Unabhängig davon ist diese Methode der Treiberwahl natürlich insbesondere dann am flexibelsten, wenn ein Treiber nicht (mehr) verfügbar ist, und der erwähnte Bug zuschlägt.

UPDATE:

Es kann eine gute Idee sein, die Erstellung des Caches in einen eigenen Controller auszulagern. Auf die Art vermeidet man, dass die Anwendung für denjenigen hängt, der das Pech hatte, auf eine veraltete Cache-Datei zugreifen zu wollen.

Ich habe in der App die oben beschriebene Logik implementiert, allerdings mit einer TTL von 15 Min. Parallel rufe ich per Cron alle 10 Min den Controller auf (mit “-m 540”, also max 9 Min Laufzeit), der die Cache-Dateien erstellt – wobei ich in meinem Fall davon ausgehe, dass das Erstellen etwa 5 Minuten max dauert.

So findet die Anwendung immer aus Ihrer Sicht aktuelle (weil < 15 Min alt) Cache-Dateien vor, fällt aber gleichzeitig nicht um, wenn der Cron mal ausfällt.

Leave a Reply

Your email address will not be published.

Ich erkläre mich damit einverstanden, dass alle eingegebenen Daten und meine IP-Adresse zum Zweck der Spamvermeidung durch das Programm Akismet in den USA überprüft und gespeichert werden. Weitere Informationen zu Akismet und Widerrufsmöglichkeiten.