Heim  >  Artikel  >  CMS-Tutorial  >  Leitfaden zur Entwicklung von WordPress-Webanwendungen: Detaillierte Erläuterung der verfügbaren Funktionen (Teil 7): Caching-Technologie

Leitfaden zur Entwicklung von WordPress-Webanwendungen: Detaillierte Erläuterung der verfügbaren Funktionen (Teil 7): Caching-Technologie

WBOY
WBOYOriginal
2023-08-30 12:37:02855Durchsuche

WordPress Web应用开发指南:可用功能详解(第7部分):缓存技术

Eines der wichtigsten Dinge, auf die wir beim Erstellen von Webanwendungen immer achten müssen, ist die Leistung.

Wie man so schön sagt: Leistung ist ein Feature.

Ob Sie Designer, Entwickler oder Benutzer sind, Sie wissen das intuitiv: Wenn es um Apps geht, hassen wir das Warten. Wir sind frustriert, wenn die Dinge nicht schnell genug funktionieren oder wir länger warten müssen, als wir denken.

Zu diesem Zweck können die meisten modernen Webentwicklungs-Frameworks mithilfe einer API eine Art Caching implementieren, und WordPress (wenn auch ein Basis-Framework) ist keine Ausnahme.

Während wir unsere Diskussion darüber fortsetzen, warum WordPress eine brauchbare Wahl als Grundlage für die Entwicklung von Webanwendungen ist, werden wir uns die von der Kernanwendung bereitgestellten APIs ansehen, wie sie funktionieren und wie wir sie auch zu unserem Vorteil nutzen können Wie man zusätzliches Caching-Plugin verwendet, verbessert die Leistung weiter.


Warum ist Caching wichtig?

Kurz gesagt, Caching ist wichtig, weil es uns ermöglicht, häufig abgerufene Daten irgendwo im Speicher zu speichern, damit sie schnell abgerufen werden können.

Wenn man das Gesamtbild betrachtet, wird dies immer deutlicher, wenn mehrere Benutzer eine Website betrachten. Ich meine, wenn eine Person (oder nur sehr wenige) eine Website besucht und diese Website ihre Daten in einer Datenbank speichert, müssen diese Informationen jedes Mal, wenn die Seite geladen wird, von der Website abgerufen werden. Datenbank gespeichert, in die Seite eingefügt und an den Benutzer zurückgegeben.

Wenn ein bestimmter Cache-Level eingerichtet ist, muss die Datenbank nicht häufig aufgerufen werden. Stattdessen können Informationen aus einem Bereich im Speicher abgerufen werden, was einen schnelleren Abruf und damit kürzere Seitenladezeiten ermöglicht.

Auf die technischen Details hierzu gehen wir später in diesem Artikel ein.

Wie wäre es mit dem Plugin?

Wenn Sie WordPress schon lange verwenden, kennen Sie wahrscheinlich die vielen verfügbaren Caching-Plugins.

Das sind zweifellos großartige Lösungen zur Beschleunigung Ihrer Website und/oder Webanwendung, aber es stellt sich die Frage: Wenn Sie dazu ein Plugin verwenden können, warum sollten wir uns dann darüber Sorgen machen?

Natürlich ist das eine berechtigte Frage, aber Plugins können allein nur eine begrenzte Menge leisten.

Entwickler können ihre Anwendungen so erstellen, dass sie nicht nur ohne Caching-Mechanismen eine gute Leistung erbringen, sondern durch besagte Caching-Plugins auch deutlich verbessert werden.

Ich meine, diese Caching-Plugins suchen nach Daten, die Themen und Anwendungen irgendwo speichern möchten, und wenn wir dies programmgesteuert in unserem eigenen Arbeitskontext tun können, haben diese Plugins einen größeren Einfluss auf die Leistung.

Nachdem wir die verfügbaren APIs verstanden haben, werden wir dieses Thema später in diesem Artikel noch einmal aufgreifen und sehen, wie sie die Leistung von Caching-Plugins verbessern können.


Transiente API

Um First-Level-Caching in unserer Anwendung einzuführen, müssen wir die Transients-API von WordPress nutzen. Bitte beachten Sie zunächst, dass die offizielle Definition eines Transienten „etwas ist, das nur für kurze Zeit existiert.“

Wie im Codex Alimentarius definiert:

[Transient API] bietet eine einfache und standardisierte Möglichkeit, zwischengespeicherte Daten vorübergehend in der Datenbank zu speichern, indem ihr ein benutzerdefinierter Name und ein Zeitbereich zugewiesen werden, nach dem die Daten ablaufen und gelöscht werden.

Aber was genau bedeutet das? Schließlich werden die Daten immer noch in der Datenbank gespeichert. Warum ist dies also besser als das Speichern der Daten in einer anderen Datenbanktabelle (wie der

-Tabelle?)? wp_options

Wir werden dies ausführlicher besprechen, sobald wir die Diskussion über Caching und Plugins noch einmal aufgreifen.

Transienten einrichten

Das Festlegen transienter Werte ist eigentlich so einfach wie das Speichern der Daten in einer Optionstabelle.

Konkret benötigen Sie einen Schlüsselwert, der die Daten eindeutig identifiziert, und dann einen mit diesem Schlüssel verknüpften Wert. Sie benötigen außerdem eine Ablaufzeit (in Sekunden), um die Daten in der Tabelle zu behalten, bevor die Tabelle aktualisiert wird.

Angenommen, wir möchten den Namen des aktuellen Benutzers als letzten oder zuletzt aktiven Benutzer auf der Website speichern. Wir können dies mit der Funktion

tun. wp_get_current_user()

Zunächst stellen wir folgende Werte ein:

set_transient( 'most_recent_user', wp_get_current_user()->user_login, 12 * HOUR_IN_SECONDS )

Achten Sie dabei bitte auf folgende Punkte:

    Ich identifiziere den letzten Benutzer im System als den aktuell angemeldeten Benutzer und wir speichern ihn 12 Stunden lang.
  • Bitte beachten Sie, dass
  • Konstanten in WordPress 3.5 eingeführt wurden. Eine vollständige Liste der Konstanten finden Sie hier. HOUR_IN_SECONDS
Obwohl wir auf diese Weise „Transienten einrichten“

, erklärt dies noch nicht, wie wir mit Transienten umgehen, wenn sie nicht existieren oder bereits existieren. Wir werden später in diesem Artikel ausführlich darauf eingehen.

Transienten abrufen

Wenn es um das Abrufen von Transienten geht, ist es dem Abrufen von Metadaten oder Optionen sehr ähnlich. Ich meine, wir müssen nur den Schlüssel kennen, um die Informationen abzurufen.

Um mit dem obigen Beispiel übereinzustimmen, können wir den neuesten Benutzer der Anwendung mit dem folgenden Aufruf abrufen:

get_transient('most_recent_user');

Dies gibt natürlich jede Art von Informationen zurück, die Sie gespeichert haben, oder Wenn der Transient abgelaufen ist (d. h. mehr als 12 Stunden vergangen sind), gibt die Funktion einen booleschen Wert von FALSE.

zurück

Dies ist wichtig, insbesondere wenn Sie versuchen, zwischengespeicherte Werte zu lesen und diese dann aus einer anderen Datenquelle abrufen müssen (sofern sie nicht im temporären Speicher verfügbar sind).

Wir werden uns vor dem Ende dieses Artikels ein vollständiges Beispiel dafür ansehen.

Transienten löschen

Wenn Sie schließlich einen Transienten löschen müssen, um ihn vollständig zu entfernen, oder ihn vor seinem definierten Ablauf entfernen müssen, damit er durch einen anderen Wert ersetzt werden kann, können Sie einfach die folgende Funktion verwenden:

delete_transient('most_recent_user');

Wenn das vorübergehende Löschen des Werts nicht erfolgreich ist, wird die Funktion zurückgegeben FALSE;否则,它将返回 FALSE; andernfalls wird sie zurückgegeben

.

Vorübergehender Ablauf

Beim Festlegen der Ablaufzeit eines zwischengespeicherten Werts gibt es Möglichkeiten, das Festlegen des Werts einfacher zu gestalten als musikalisch einfache Ganzzahloperationen.

MINUTE_IN_SECONDSZum Beispiel ist

einfacher zu verwenden als 60, insbesondere wenn man mit Minuten, Stunden oder Tagen multipliziert.

Ab WordPress 3.5 wurden der Kernanwendung mehrere Konstanten hinzugefügt, um diese Berechnungen leichter lesbar zu machen.

Das heißt:
  • MINUTE_IN_SECONDS
  • HOUR_IN_SECONDS
  • DAY_IN_SECONDS
  • WEEK_IN_SECONDS
  • YEAR_IN_SECONDS

Einfacher zu verwenden, zu lesen und zu schreiben, nicht wahr?

Vollständiges Beispiel mit Transienten

An diesem Punkt halte ich es für wichtig zu verstehen, wie man einen Übergang einrichtet, indem man den Wert in der Optionstabelle speichert.

Hier ist die Reihenfolge, in der wir dies tun:
  1. wp_optionsWir speichern eine Option in der
  2. -Tabelle.
  3. Als nächstes prüfen wir, ob der Wert im Cache vorhanden ist.
  4. Wenn der Wert im Cache vorhanden ist, löschen wir ihn, andernfalls fügen wir ihn hinzu.

Dann machen wir in der zweiten Hälfte des Codes Folgendes:

  1. Wir werden versuchen, die Wertfunktion aus dem Cache abzurufen.
  2. Wenn der Wert im Cache vorhanden ist, greifen wir auf die Optionstabelle zurück. Wenn der Wert jedoch vorhanden ist, verwenden wir ihn.

Nachdem das gesagt ist, werfen wir einen Blick darauf:

$username = wp_get_current_user()->user_name;
add_option( 'most_recent_user', $username );

// Check to see if the value exists in the cache
if ( FALSE !== get_transient( 'most_recent_user' ) ) {

	// If it does, we'll delete it...
	if( delete_transient( 'most_recent_user' ) ) {

		// ...and store the most recent user for a maximum of one minute
		set_transient( 'most_recent_user', MINUTE_IN_SECONDS );

	} else {
		// The deletion was unsuccessful, so log the error
	}

}

// Now try to read the value from the cache.
if ( FALSE !== ( $username = get_transient( 'most_recent_user' ) ) {

	// Since it doesn't exist, then we'll read it from the option's table
	$username = get_option( 'most_recent_user' );

	// And then we'll update the cache
	set_transient( 'most_recent_user', $username, MINUTE_IN_SECONDS );

}

Bitte beachten Sie, dass dieses Beispiel nicht vollständig ist – es könnte umgestaltet werden, um klarer zu sein, und der Code sollte in Funktionen abstrahiert werden, die für die Anwendung relevanter sind. Der Zweck dieses Codes besteht jedoch darin, zu zeigen, wie mit bedingter Logik, Optionen und Transienten umgegangen wird .


Wie funktioniert das mit Plugins?

Nach alledem können wir uns noch einmal mit der Frage befassen, wie man Transienten nutzen kann, um die Plug-in-Leistung zu verbessern.

Wie wir bereits erwähnt haben:

Nachdem wir die verfügbaren APIs verstanden haben, werden wir dieses Thema später in diesem Artikel noch einmal aufgreifen, um zu verstehen, wie sie die Leistung von Caching-Plugins verbessern können.

块引用>

Davon abgesehen kommt es beim Caching und in der WordPress-Datenbank vor allem auf den Speicherort der Daten in der Datenbank an.

Da transiente Daten an einem anderen Ort als andere Daten gespeichert werden, suchen Plugins (z. B. solche, die auf Memcached basieren) nach den Daten, in denen die transienten Daten gespeichert sind, und laden die Daten von diesem Ort in den Speicher.

Wenn also Daten angefordert werden, werden die Daten aus dem Speicher abgerufen. Wenn die Daten nicht vorhanden sind, werden sie aus der Datenbank abgerufen.

Am wichtigsten ist: Wenn das Lesen von Daten aus dem Cache und das Abrufen von Daten aus der Datenbank fehlschlägt, werden sie bei korrekter Programmierung wieder in den Cache eingefügt, sodass sie beim nächsten Abruf wieder in den Cache eingefügt werden. im Speicher verfügbar.

Abschließend ist bei vorübergehenden Informationen vor allem zu beachten, dass sie ein Ablaufdatum haben. Das bedeutet, dass die Daten nur für einen bestimmten Zeitraum in diesem Bereich der Datenbank gespeichert werden.

Dafür müssen wir dies berücksichtigen. Das bedeutet, dass wir jedes Mal, wenn wir Transienten abrufen wollen, sicherstellen müssen, dass sie vorhanden sind. Wenn nicht, ziehen wir sie aus ihrem Standort und lagern sie am richtigen Ort.


Benutzerdefinierte Abfrage

An dieser Stelle haben wir viele der von WordPress bereitgestellten Funktionen im Zusammenhang mit den Grundlagen der Webanwendungsentwicklung behandelt.

Aber wir müssen noch eine letzte wichtige Komponente abdecken, und zwar den Umgang mit benutzerdefinierten Abfragen.

Natürlich gibt es einige großartige APIs, die sich auf die Ausführung von Abfragen beziehen, die für den speziellen Zweck von WordPress entwickelt wurden, wie WP_QueryWP_User_Query, aber wir werden uns auch einige native Tools ansehen, die es uns ermöglichen, mit definierten WordPress-Objekten zu schreiben und benutzerdefinierte Abfragen zu ermöglichen zur Datenbank mithilfe von Methoden zur korrekten Datenbereinigung.

Aber all das und noch mehr werden wir im nächsten Artikel behandeln.

Das obige ist der detaillierte Inhalt vonLeitfaden zur Entwicklung von WordPress-Webanwendungen: Detaillierte Erläuterung der verfügbaren Funktionen (Teil 7): Caching-Technologie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn