Datenbank-Cache-Klasse
Mit der Datenbank-Cache-Klasse können Sie Datenbankabfrageergebnisse in Textdateien speichern, um den Datenbankzugriff zu reduzieren.
Wichtig
Wenn Caching aktiviert ist, wird diese Klasse automatisch vom Datenbanktreiber geladen. Laden Sie sie nicht manuell.
Wichtig
Nicht alle Abfrageergebnisse können zwischengespeichert werden. Bitte lesen Sie den Inhalt dieser Seite sorgfältig durch.
Cache aktivieren
Das Aktivieren des Caches erfordert drei Schritte:
Sobald das Caching aktiviert ist, wird eine Seite jedes Mal, wenn sie geladen wird, automatisch zwischengespeichert, solange die Seite Datenbankabfragen enthält.
Wie funktioniert Caching?
Das Abfrage-Caching-System von CodeIgniter wird automatisch ausgeführt, wenn Sie eine Seite besuchen. Wenn das Caching aktiviert ist, wird das Abfrageergebnisobjekt beim ersten Laden der Seite serialisiert und in einer Textdatei auf dem Server gespeichert. Wenn Sie das nächste Mal auf die Seite zugreifen, wird die Cache-Datei direkt verwendet, ohne auf die Datenbank zuzugreifen. Auf diese Weise wird Ihr Datenbankzugriff für die zwischengespeicherte Seite auf 0 reduziert.
Nur Abfragen vom Lesetyp (SELECT) können zwischengespeichert werden, da nur diese Art von Abfrage Ergebnisse liefert. Schreibabfragen (INSERT, UPDATE usw.) generieren keine Ergebnisse und werden daher nicht zwischengespeichert.
Cache-Dateien laufen nie ab und alle Abfragen bleiben verfügbar, solange sie zwischengespeichert werden, es sei denn, Sie löschen sie. Sie können den Cache für bestimmte Seiten oder den gesamten Cache löschen. Im Allgemeinen können Sie die folgende Funktion verwenden, um den Cache zu leeren, wenn bestimmte Ereignisse auftreten (z. B. wenn Daten zur Datenbank hinzugefügt werden).
Kann Caching die Website-Leistung verbessern?
Ob durch Caching Leistungssteigerungen erzielt werden können, hängt von vielen Faktoren ab. Wenn Sie über eine stark optimierte Datenbank bei geringer Auslastung verfügen, stellen Sie möglicherweise keine Leistungsverbesserung fest. Und wenn auf Ihre Datenbank häufig zugegriffen wird, können Sie nach dem Zwischenspeichern Leistungsverbesserungen feststellen, sofern Ihr Dateisystem nicht zu viel Overhead hat. Beachten Sie, dass sich durch das Caching lediglich die Art und Weise ändert, wie Daten abgerufen werden, vom Zugriff auf die Datenbank bis zum Zugriff auf das Dateisystem.
Zum Beispiel ist Caching in einigen Cluster-Server-Umgebungen aufgrund zu häufiger Dateisystemvorgänge tatsächlich schädlich. Caching ist möglicherweise nur in einer gemeinsam genutzten Einzelserverumgebung von Vorteil. Leider gibt es keine einheitliche Antwort auf die Frage, ob Sie Ihre Datenbank zwischenspeichern müssen, es hängt alles von Ihrer Situation ab.
Wie werden Cache-Dateien gespeichert?
CodeIgniter speichert jede Abfrage in einer eigenen Cache-Datei, die basierend auf der aufgerufenen Controller-Methode weiter in entsprechenden Unterverzeichnissen organisiert ist. Genauer gesagt werden Unterverzeichnisse anhand der ersten beiden Segmente Ihres URI (Controllername und Methodenname) benannt.
Zum Beispiel haben Sie einen Blog-Controller und eine Kommentarmethode mit drei verschiedenen Abfragen. Das Caching-System erstellt ein Verzeichnis mit dem Namen blog+comments und generiert in diesem Verzeichnis drei Cache-Dateien.
Wenn Ihr URI dynamische Abfragen enthält (z. B. bei der Verwendung von Paging), generiert jede Abfrageinstanz eine eigene separate Cache-Datei. Daher kann die Anzahl der Cache-Dateien letztendlich der Anzahl der Abfragen auf Ihrem Browser entsprechen Seite. Dies ist mehrmals der Fall.
Verwalten Sie Ihre Cache-Dateien
Da Cache-Dateien nicht ablaufen, sollte es in Ihrer Anwendung einen Mechanismus zum Löschen des Caches geben. Nehmen wir beispielsweise an, dass dies der Fall ist a Der Blog ermöglicht Benutzern das Kommentieren. Wenn ein neuer Kommentar eingereicht wird, sollten Sie die Cache-Datei löschen, die der Controller-Methode entspricht, die den Kommentar anzeigt. Es gibt zwei verschiedene Methoden zum Löschen zwischengespeicherter Daten.
Nicht alle Datenbankmethoden sind Cache-kompatibel
Abschließend müssen wir darauf hinweisen, dass das zwischengespeicherte Ergebnisobjekt aus diesem Grund nur eine vereinfachte Version des Ergebnisobjekts ist , da mehrere Methoden zum Abfragen von Ergebnissen nicht verwendet werden können.
Die unten aufgeführten Methoden können nicht für zwischengespeicherte Ergebnisobjekte verwendet werden:
Gleichzeitig können die beiden IDs result_id und conn_id nicht verwendet werden, da diese beiden IDs nur für Echtzeit-Datenbankoperationen geeignet sind.
Funktionsreferenz
$this->db->cache_on() / $this->db->cache_off()
Zum manuellen Aktivieren/Deaktivieren des Cachings können diese beiden Methoden nützlich sein, wenn Sie bestimmte Abfragen nicht zwischenspeichern möchten. Beispiel:
// Turn caching on $this->db->cache_on(); $query = $this->db->query("SELECT * FROM mytable"); // Turn caching off for this one query $this->db->cache_off(); $query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'"); // Turn caching back on $this->db->cache_on(); $query = $this->db->query("SELECT * FROM another_table");
$this->db->cache_delete()
Löscht die Cache-Datei für eine bestimmte Seite, wenn Sie Ihre aktualisieren Nützlich, wenn die Datenbank später gelöscht werden muss.
Das Cache-System schreibt den Cache entsprechend der URI der Seite, die Sie besuchen. Wenn Sie beispielsweise die Seite example.com/index.php/blog/comments besuchen, den Cache Das System speichert die Cache-Dateien im Blog+Kommentar-Verzeichnis. Um diese Cache-Dateien zu löschen, können Sie Folgendes verwenden:
$this->db->cache_delete('blog', 'comments');
如果你没提供任何参数,将会清除当前 URI 对应的缓存文件。
$this->db->cache_delete_all()
清除所有的缓存文件,例如:
$this->db->cache_delete_all();
版权声明:本文为博主原创文章,未经博主允许不得转载。
以上就介绍了[codeigniter 五]、查询缓存,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。