Hauptsächlich in WordPress-Kontexten arbeitend, habe ich meistens auf Ausgabepufferung in meinem PHP-Code verzichtet, aber ich habe vor kurzem begonnen, damit zu experimentieren und einfach als Benutzer zu erkennen, ob es merkliche Leistungseinbußen in typischen (für mich) gab Szenarien. Ich kann nicht sagen, dass ich etwas Definitives erreicht habe, aber ich weiß nicht, dass meine Experimente wirklich auf groß angelegte Situationen zutreffen.PHP-Ausgang Pufferung: Wann/ob für verschiedene Arten von realen bestehenden Websites und Anwendungen zu verwenden?
Mein allgemeiner Eindruck ist, dass ich es vermeiden sollte, es sei denn, ich habe einen sehr guten Grund, es zu benutzen - wahrscheinlich mit der Art von Skript, an dem ich im Allgemeinen nicht interessiert bin. Aber ich lese Vorschläge, die ich in dem einen oder anderen normalen Kontext Pufferung verwenden könnte (zB ein Shortcode, der einen großen HTML-Block rendert), und ich sehe ihn oft im Code von Leuten, deren Arbeit ich bewundere und versuche nachzuahmen . Ich habe die bekannten Sequenzen von ob_start() usw. gesehen, die für das Rendern von sehr minimaler Ausgabe verwendet werden, die nicht weiter angepasst wird: zum Beispiel ein Menü oder eine andere kurze Liste.
Ich habe auch Leute gesehen, die behaupten, dass es einfach keine Notwendigkeit für die Ausgabepufferung in gut geschriebenem Code gibt, außer in besonderen Situationen. Siehe StackOverflow Q & A's hier Why use output buffering in PHP?, um ein Beispiel zu geben. Andere werden sagen, dass es NUR nützlich ist, wenn eine Manipulation der Ausgabe notwendig ist - wie ein preg_replace des Inhalts - aber Sie brauchen keinen Ausgabepuffer, um so etwas zu tun (irgendeine ol Variable reicht aus).
In den meisten realen Instanzen der Art, auf die ich stoße, wird auch eine Version des Seiten-Caching verwendet, und manchmal mehrere verschiedene Plug-Ins mit jeweils eigenem Caching. Wenn man bedenkt, wie viele Funktionen selbst zahlreiche verschachtelte/sekundäre HTML-erzeugende Funktionen verwenden, könnten Sie leicht Tausende von verschachtelten gepufferten Blöcken pro Seite erzeugen: Angenommen, eine foreach-Schleife erzeugt n Anzahl von Blog-Kommentaren innerhalb einer größeren Seite: Jeder Blog-Kommentar ist von einer Funktion gerendert und könnte getrennt gepuffert werden. Die Funktion für jeden Kommentar könnte innerhalb der foreach-Schleife der Funktion aufgerufen werden, die den Kommentarthread ausgibt, und ihre Ausgabe könnte auch gepuffert werden. Dann könnte die Funktion, die den Post, der den Kommentarthread enthält, ausgibt, gepuffert werden, bevor sie gerendert wird. Die gesamte Seite, einschließlich verschiedener selbstausgabebufferter Vorlagen, Plug-Ins, Widgets, Menüs usw., könnte ebenfalls ausgegeben gepuffert werden.
An welchem Punkt wäre etwas davon nützlich oder, alternativ, völlig kontraproduktiv?
Wenn die Antwort jedes Element beinhaltet von "nun, Sie würden nicht in Ihrem Blog bemerken, aber Sie würden es für BuzzFeed oder die New York Times benötigen", oder umgekehrt, wie würde ich schätzen, wenn der Punkt hat erreicht worden?
An diesem Punkt möchte ich den Code so sauber wie möglich schreiben, und lassen (was ich verstehe) integrierte PHP, Browser, Server, etc., Pufferung und explizite Caching-Funktionen machen die Arbeit dass die Seite oder ihre Elemente effizient und schnell geladen werden, was das eigentliche Ziel ist, nein?
@RyanVincent Es ist eine gute Übung, nur einen PHP-Block pro Datei zu verwenden und das abschließende '?>' Ganz wegzulassen, um unbeabsichtigtes Ausgeben zu verhindern. –