Beim Erstellen von Webanwendungen ist eines der wichtigsten Dinge, auf die wir ständig achten müssen, die Leistung.
Wie sie sagen, ist Leistung ein Merkmal.
Unabhängig davon, ob Sie Designer, Entwickler oder Benutzer sind, Sie wissen, dass dies intuitiv wahr ist: Wenn es um Anwendungen geht, hassen wir es nicht, zu warten. Wir sind frustriert, wenn Dinge nicht schnell genug funktionieren oder wir länger warten müssen, als wir glauben, dass wir dies tun sollten.
Zu diesem Zweck ermöglichen die meisten modernen Webentwicklungs-Frameworks die Implementierung bestimmter Arten von Zwischenspeicherung durch die Verwendung bestimmter APIs, und WordPress ist zwar nicht das Fundament.
Während wir unsere Diskussion darüber fortsetzen, warum WordPress eine nützliche Option ist, um als Grundlage für die Entwicklung von Webanwendungen zu dienen, werfen wir einen Blick auf die APIs, die von der Kernanwendung bereitgestellt werden, wie sie funktionieren und wie wir sie nutzen können unser Vorteil und wie die Leistung durch zusätzliche Cache-Plugins noch verbessert werden kann.
Kurz gesagt, das Caching ist wichtig, da wir so Daten speichern können, die häufig an einem Ort im Speicher abgerufen werden, sodass sie schnell abgerufen werden können.
Wenn Sie dies in einem größeren Maßstab betrachten, wird dies immer deutlicher, wenn mehrere Benutzer eine Site betrachten. Damit meine ich, dass, wenn eine einzelne Person oder eine sehr kleine Anzahl von Personen eine Website angegriffen hat und die Website ihre Daten in einer Datenbank gespeichert hat, jedes Mal, wenn eine Seite geladen wird, diese Informationen von der Website abgerufen werden müssen Datenbank eingefügt, in die Seite eingefügt und an den Benutzer zurückgegeben.
Wenn eine Zwischenspeicherungsstufe eingerichtet ist, müssen Aufrufe an die Datenbank nicht so häufig ausgeführt werden. Stattdessen können die Informationen aus einem Speicherbereich abgerufen werden, was zu einem schnelleren Abruf und damit zu kürzeren Seitenladezeiten führt.
Wir werden später in diesem Artikel auf die technischen Details näher eingehen.
Wenn Sie WordPress über einen längeren Zeitraum hinweg verwendet haben, sind Sie wahrscheinlich mit einer Reihe von verfügbaren Cache-Plugins vertraut.
Zweifellos sind dies großartige Lösungen, um Ihre Website und / oder Webanwendung zu beschleunigen, aber es stellt sich die Frage: Wenn Plugins zur Verfügung stehen, sollten wir uns darum kümmern?
Dies ist zwar eine berechtigte Frage, aber die Plugins können nur so viel Arbeit alleine erledigen.
Entwickler können ihre Anwendungen so strukturieren, dass sie nicht nur ohne Zwischenspeicherungsmechanismen eine gute Leistung erbringen, sondern auch durch diese Zwischenspeicherungs-Plugins erheblich verbessert werden.
Damit meine ich, dass diese Caching-Plugins nach Themen suchen, die von Themes und Anwendungen an einem bestimmten Ort gespeichert werden. Wenn wir dies programmgesteuert im Rahmen unserer eigenen Arbeit tun können, werden die Plugins zu noch mehr Leistung führen.
Nachdem wir uns die verfügbaren APIs angesehen haben, gehen wir dieses Thema erneut durch Wie Sie verbessern die Leistung der Zwischenspeicherung von Plugins später in diesem Artikel.
Um eine erste Stufe des Zwischenspeichers in die Anwendung einzuführen, müssen wir die Transients-API von WordPress nutzen. Beachten Sie zunächst, dass die offizielle Definition eines Transienten "etwas ist, das nur für kurze Zeit existiert".
Genau wie im Codex definiert:
[Die Transient-API] bietet eine einfache und standardisierte Methode zum Speichern zwischengespeicherter Daten in der Datenbank, indem sie ihr einen benutzerdefinierten Namen und einen Zeitrahmen gibt, nach dem sie ablaufen und gelöscht werden.
Aber was heißt das genau? Immerhin werden die Daten immer noch in der Datenbank gespeichert. Warum ist dies also besser, als Daten in einer anderen Datenbanktabelle (wie der wp_options
Tabelle?)?
Wenn wir die Diskussion über Caching und Plugins erneut besprechen, werden wir ausführlicher darüber sprechen.
Das Einstellen eines Übergangswertes ist eigentlich ganz einfach und ähnelt dem Speichern von Daten in der Optionstabelle.
Insbesondere benötigen Sie einen Schlüsselwert, der die Daten eindeutig identifiziert, und dann müssen Sie diesem Schlüssel einen Wert zuordnen. Sie benötigen außerdem eine Verfallszeit (in Sekunden), um die Daten in der Tabelle zu speichern, bevor Sie sie aktualisieren.
Nehmen wir an, wir möchten den Namen des aktuellen Benutzers als den letzten oder letzten Benutzer speichern, der auf der Site aktiv ist. Wir können dies tun, indem wir das nutzen wp_get_current_user ()
Funktion.
Zuerst setzen wir den Wert wie folgt:
set_transient ('most_recent_user', wp_get_current_user () -> user_login, 12 * HOUR_IN_SECONDS)
Beachten Sie hier ein paar Dinge:
HOUR_IN_SECONDS
Konstanten wurde in WordPress 3.5 eingeführt. Eine vollständige Liste der Konstanten finden Sie hier.Obwohl wir so vorgehen Rahmen Ein Übergang, dies berücksichtigt noch immer nicht, wie wir mit Transienten umgehen können, wenn sie nicht existieren oder bereits existieren.
Wir werden das später in diesem Artikel ausführlicher behandeln.
Beim Abrufen von Transienten ist es dem Abrufen von Dingen wie Metadaten oder Optionen sehr ähnlich. Damit meine ich, dass wir nur den Schlüssel kennen müssen, mit dem die Informationen abgerufen werden.
In Übereinstimmung mit dem obigen Beispiel können Sie also den neuesten Benutzer der Anwendung mit dem folgenden Aufruf abrufen:
get_transient ('most_recent_user');
Dies wird offensichtlich die Art der Informationen zurückgeben, die Sie gespeichert haben, oder Wenn der Transient abgelaufen ist, dh mehr als 12 Stunden vergangen sind, gibt die Funktion den booleschen Wert von zurück FALSCH
.
Dies ist besonders wichtig, wenn Sie versuchen, Cache-Werte zu lesen, und sie dann aus einer anderen Datenquelle beziehen müssen, falls sie nicht im temporären Speicher verfügbar sind.
Am Ende des Artikels werden wir uns ein vollständiges Beispiel ansehen.
Wenn Sie einen Transienten löschen müssen, um ihn entweder vollständig zu entfernen, oder um ihn vor dem definierten Ablauf zu entfernen, um ihn durch einen anderen Wert zu ersetzen, verwenden Sie einfach die folgende Funktion:
delete_transient ('most_recent_user');
Darüber hinaus wird diese Funktion zurückgegeben FALSCH
wenn das Löschen des Übergangswertes nicht erfolgreich ist; Andernfalls wird es zurückkehren FALSCH
.
Wenn es um das Einstellen der Zeiten für das Ablaufen der Cache-Werte geht, gibt es verschiedene Möglichkeiten, die das Einstellen von Werten einfacher machen, als die grundlegende Bearbeitung von Ganzzahlen durch Musik.
Zum Beispiel, MINUTE_IN_SECONDS
ist viel einfacher zu verwenden als 60, insbesondere wenn es mit Minuten, Stunden oder Tagen multipliziert wird.
Und seit WordPress 3.5 wurden der Kernanwendung einige Konstanten hinzugefügt, die das Lesen dieser Berechnungen wesentlich erleichtern.
Nämlich:
MINUTE_IN_SECONDS
HOUR_IN_SECONDS
DAY_IN_SECONDS
WEEK_IN_SECONDS
YEAR_IN_SECONDS
Viel einfacher zu bedienen, zu lesen und zu schreiben, ist es nicht?
An diesem Punkt ist es meiner Meinung nach wichtig zu prüfen, wie Transienten eingerichtet werden können, indem ein Wert in der Optionstabelle gespeichert wird.
Hier ist die Reihenfolge, in der wir das tun werden:
wp_options
Tabelle.Dann werden wir in der zweiten Hälfte des Codes Folgendes tun:
Schauen wir uns das mal an:
$ username = wp_get_current_user () -> Benutzername; add_option ('most_recent_user', $ username); // Prüfen Sie, ob der Wert im Cache vorhanden ist, wenn (FALSE! == get_transient ('most_recent_user')) // Wenn dies der Fall ist, werden wir ihn löschen… if (delete_transient ('most_recent_user')) // … Und den neuesten Benutzer für maximal eine Minute speichern set_transient ('most_recent_user', MINUTE_IN_SECONDS); else // Die Löschung war nicht erfolgreich, protokollieren Sie den Fehler. // Versuchen Sie nun, den Wert aus dem Cache zu lesen. if (FALSE! == ($ username = get_transient ('most_recent_user')) // Da es nicht existiert, lesen wir es aus der Tabelle der Option $ username = get_option ('most_recent_user'); // Und dann aktualisieren wir den Cache set_transient ('most_recent_user', $ username, MINUTE_IN_SECONDS);
Beachten Sie, dass dieses Beispiel nicht vollständig ist - es könnte ein wenig sauberer gestaltet werden und der Code sollte in Funktionen abstrahiert werden, die für die Anwendung relevanter sind. Der Zweck dieses Codes besteht darin, zu zeigen, wie mit bedingten Logikoptionen gearbeitet wird und Transienten.
Nachdem all dies gesagt wurde, können wir uns erneut mit der Frage beschäftigen, wie die Verwendung von Transienten die Leistung von Plugins verbessern kann.
Wie bereits erwähnt:
Nachdem wir uns die verfügbaren APIs angesehen haben, gehen wir dieses Thema erneut durch Wie Sie verbessern die Leistung der Zwischenspeicherung von Plugins später in diesem Artikel.
Mit dem, Caching und der WordPress-Datenbank hat das mit zu tun Standort der Daten in der Datenbank.
Da Transienten an einem anderen Ort als der Rest der Daten gespeichert werden, suchen Plugins - beispielsweise ein Plug-In auf Memcached-Basis - nach Daten, in denen Transienten gespeichert sind, und laden die Daten dann von dort aus in den Speicher.
Wenn also die Daten angefordert werden, werden sie aus dem Speicher abgerufen. Wenn die Daten nicht vorhanden sind, werden sie aus der Datenbank abgerufen.
Wenn die Programmierung korrekt durchgeführt wird und die Daten nicht aus dem Cache gelesen und aus der Datenbank abgerufen werden, werden sie wieder in den Cache eingefügt, damit sie beim nächsten Abruf im Speicher verfügbar sind.
Schließlich ist es wichtig, bei vorübergehenden Informationen zu beachten, dass sie über einen bestimmten Zeitraum verfügen. Dies bedeutet, dass Daten nur für eine bestimmte Zeit in diesem Bereich der Datenbank gespeichert werden.
Zu diesem Zweck müssen wir das berücksichtigen. Wenn wir also Transienten abrufen möchten, müssen wir sicherstellen, dass sie vorhanden sind. Wenn nicht, dann ziehen wir sie von dort weg sind lokalisieren und an einem geeigneten Ort aufbewahren.
An dieser Stelle haben wir viel über die Features von WordPress gesprochen, die sich auf eine Grundlage für die Entwicklung von Webanwendungen beziehen.
Aber wir haben noch eine letzte wichtige Komponente zu behandeln, und so gehen wir mit benutzerdefinierten Abfragen um.
Sicher, es gibt einige großartige APIs, die sich auf das Ausführen von Abfragen beziehen, die für WordPress-spezifische Zwecke entwickelt wurden WP_Query
und WP_User_Query
, Aber wir werden uns auch einige der systemeigenen Funktionen ansehen, die es uns ermöglichen, benutzerdefinierte Abfragen mit definierten WordPress-Objekten in die Datenbank zu schreiben sowie Methoden, die eine ordnungsgemäße Datenbereinigung ermöglichen.
Aber all das und mehr davon werden wir im nächsten Artikel behandeln.