PHP bietet einen sehr leistungsstarken Ausgangs -Caching -Mechanismus, der es Entwicklern ermöglicht, den Inhalt vor der Seitenausgabe zu unterbinden, wodurch die Leistung verbessert oder der Ausgangsinhalt dynamisch gesteuert wird. Die Funktion OB_start () von PHP und die Funktion OB_LIST_HANTLERS () sind wichtige Tools für die Implementierung dieses Caching. In diesem Artikel werden wir untersuchen, wie diese beiden Funktionen verwendet werden, um die dynamische Verwaltung von Ausgangs-Caches mit mehreren Schichten zu implementieren.
In PHP bezieht sich der Ausgangscache auf die vorübergehende Speicherung der Ausgabe einer Seite (z. B. HTML) im Speicher, anstatt sie direkt an den Browser zu senden. Auf diese Weise können wir den Ausgangsinhalt ändern, die Ausgabe verzögern oder die Cache -Daten während des Vorgangs der Seitengenerierung mehrmals bedienen.
Die Funktion OB_Start () wird verwendet, um den Ausgangscache zu aktivieren, während OB_end_flush () zum Ausschalten von Cache und Ausgabe des Inhalts verwendet wird. OB_LIST_HANDLERS () wird verwendet, um alle aktuellen Ausgangs -Cache -Handler aufzulisten.
ob_start () ist die am häufigsten verwendete Ausgangs -Cache -Funktion in PHP. Es wird verwendet, um den Ausgangscache zu starten, und ermöglicht es uns, die Ausgabe zu verarbeiten, bevor er an den Browser gesendet wird.
ob_start(); // Starten Sie den Ausgangscache
echo "Hello, world!"; // Der Ausgangsinhalt wird zwischengespeichert
$output = ob_get_contents(); // Holen Sie sich zwischengespeicherte Inhalte
ob_end_flush(); // Cache -Inhalt ausgeben und den Cache ausschalten
Im obigen Code startet Ob_Start () eine neue Ausgabes -Cache -Ebene. OB_get_Contents () erhält den aktuell zwischengespeicherten Inhalt und verwendet schließlich OB_end_flush (), um den zwischengespeicherten Inhalt in den Browser auszugeben und den Cache zu schließen.
Die Funktion OB_List_handlers () wird verwendet, um alle aktuellen Ausgabes -Cache -Handler aufzulisten. Der Ausgangscache wird normalerweise als Stapel verwaltet, sodass diese Funktion uns dabei helfen kann, alle derzeit aktiven Cache -Ebenen anzusehen.
ob_start();
ob_start(); // Starten Sie die zweite Cache -Ebene
echo "Second Layer";
ob_start(); // Starten Sie den Cache der dritten Ebene
echo "Third Layer";
$handlers = ob_list_handlers(); // Holen Sie sich alle Cache -Handler
print_r($handlers); // Cache -Handler drucken
In diesem Beispiel gibt Ob_List_handlers () ein Array zurück, das alle zwischengespeicherten Handler enthält.
Mit einem Multi-Layer-Ausgangs-Cache können wir die Ausgangsinhaltsschicht für Schicht in verschachtelten Cache-Ebenen bedienen. Ob_Start () kann jederzeit eine neue Cache -Ebene starten, während OB_END_FLUSH () die Cache -Ebene für Ebene ausgeben und schließen kann. Auf diese Weise können Entwickler verschiedene Ausgangscache -Ebenen flexibel verwalten.
Hier ist ein Beispiel für die Implementierung von Mehrschichtausgängen zwischengespeichert:
ob_start(); // Starten Sie die erste Cache -Ebene
echo "Layer 1: Initial content.\n";
ob_start(); // Starten Sie die zweite Cache -Ebene
echo "Layer 2: Content to be inserted in the middle.\n";
ob_start(); // Starten Sie die dritte Cache -Ebene
echo "Layer 3: Final content to be inserted last.\n";
// Holen Sie sich und geben Sie den Cache -Inhalt der dritten Ebene aus und geben Sie sie aus
$thirdLayer = ob_get_contents();
ob_end_clean(); // Löschen Sie den Cache der dritten Schicht,Aber keine Ausgabe
// Holen Sie sich und geben Sie den zwischengespeicherten Inhalt der zweiten Schicht ab und geben Sie sie aus
$secondLayer = ob_get_contents();
ob_end_clean(); // Löschen Sie die zweite Cache -Schicht
// Holen Sie sich und geben Sie den zwischengespeicherten Inhalt der ersten Ebene aus und geben Sie sie aus
$firstLayer = ob_get_contents();
ob_end_flush(); // Geben Sie die erste Cache -Ebene aus und schließen Sie sie
// Fügen Sie schließlich den Inhalt der dritten und zweiten Ebene Cache in die erste Ebene ein
echo "Layer 1 Final Output: \n" . $firstLayer . $secondLayer . $thirdLayer;
In diesem Beispiel verwenden wir drei Cache -Schichten, jede Ebene kann vor dem endgültigen Ausgang gereinigt oder geändert werden. Mit ob_get_contents () und ob_end_clean () können wir den zwischengespeicherten Inhalt ohne Ausgabe sofort abrufen und dann den zwischengespeicherten Inhalt verschiedener Ebenen nach Bedarf für die Ausgabe verschmelzen.
Durch Kombinieren von ob -_list_handllers () und ob_start () können wir mehrere Cache -Ebenen dynamisch verwalten und bei Bedarf Cache -Reinigung, Ausgabe oder ändern. In komplexen Webanwendungen können beispielsweise mehrere Unterkomponenten und unterschiedliche Ausgabebedingungen vorliegen, und wir können diesen Mechanismus verwenden, um den Cache dynamisch anzupassen.
Im folgenden Beispiel zeigen wir, wie die Cache -Verarbeitung dynamische Logik hinzufügt:
ob_start(function($content) {
return strtoupper($content); // Konvertieren Sie zwischengespeichertem Inhalt in Großbuchstaben
});
echo "This is dynamic caching!"; // Der Ausgangsinhalt wird zwischengespeichert并处理
// Holen Sie sich zwischengespeicherte Inhalte und Anzeigen
echo ob_get_contents(); // Ausgabe "THIS IS DYNAMIC CACHING!"
ob_end_flush(); // Ausgabe缓存并关闭
Wenn wir eine Rückruffunktion an ob_Start () übergeben, können wir den Inhalt dynamisch verarbeiten, wenn sie zwischengespeichert werden. Dieser Ansatz bietet eine größere Flexibilität für Cache, insbesondere wenn es notwendig ist, die Ausgabe dynamisch gemäß verschiedenen Bedingungen zu ändern.
In der tatsächlichen Entwicklung müssen wir möglicherweise eine bestimmte Cache -Ebene basierend auf bestimmten Bedingungen selektiv schließen. OB_LIST_HANDLERS () bietet eine Möglichkeit, die aktuelle Cache -Ebene anzuzeigen, wodurch das dynamische Management bequemer wird.
Nehmen wir beispielsweise an, wir haben mehrere Cache -Ebenen. Wir können alle Cache -Handler über OB_LIST_HANDLERS () überprüfen und einige dieser Ebenen unter bestimmten Bedingungen selektiv schließen:
ob_start();
echo "Layer 1: Top level content.\n";
ob_start();
echo "Layer 2: Inner content.\n";
// Dynamisch alle Cache -Ebenen erhalten
$handlers = ob_list_handlers();
print_r($handlers); // Zeigen Sie alle aktuellen Cache -Ebenen an
// Schließen Sie die zweite Cache -Schicht gemäß den Bedingungen
if (in_array('ob_gzhandler', $handlers)) {
ob_end_clean(); // Löschen Sie die zweite Cache -Schicht
}
ob_end_flush(); // Geben Sie die erste Cache -Ebene aus und schließen Sie sie
Mit der obigen Methode können Entwickler die Reihenfolge und den Inhalt der Cache -Schicht entsprechend ihren Anforderungen verwalten und eine genauere Cache -Steuerung erreichen.
Ich hoffe, dass Sie durch die Erläuterung dieses Artikels besser verstehen können, wie Sie PHPs OB_List_handllers und ob_start () verwenden, um die dynamische Verwaltung von Multi-Layer-Ausgabescache zu implementieren. Durch die Verwendung dieser Funktionen kann Ihre Anwendung ein besseres Gleichgewicht zwischen Leistung und Flexibilität erzielen.