PHP Flush: Wie oft und Best Practices

stimmen
23

Ich Lesen dieser Post gerade fertig: https://developer.yahoo.com/performance/rules.html#flush und haben bereits einen Flush nach dem oberen Teil meiner Seite geladen wird implementiert (Kopf, css, Topbanner / search / nav) .

Gibt es eine Performance in Spülung getroffen? Gibt es so etwas wie es zu oft zu tun? Was sind die besten Praktiken?

Wenn ich werde eine externe API für Daten treffen, wäre es sinnvoll, vor der Hand zu spülen, damit der Benutzer nicht auf diesen Daten wartet, zurückzukommen, und zumindest einige Daten, bevor die Hand bekommen?

Veröffentlicht am 09/12/2008 um 14:51
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
19

Die beschriebene Technik sieht nett aus, aber hat mehrere Fallen:

1) die Zeit zwischen den PHP-Skript Beginn und das Ende ist klein Übertragungszeit verglichen wird; Auch das spart den Benutzer etwa 0,5 Sekunden nach Ihrer Quelle. Ist das eine erhebliche Menge an Zeit für Sie?

2) Diese Technik funktioniert nicht mit gzip Ausgabepufferung

3) wenn Sie zu oft spülen, werden Sie eine fast leere Paket auf Flush das Senden, die tatsächlich Ladezeit erhöhen könnte (auf langsame, laute Verbindungen).

4), wenn Sie spülen, Sie können keine weiteren Header senden

5) (kleine Ausgabe) die Antwort des Servers wird in aufgeteilte Codierung kommen, die der Client bedeutet, dass die Größe im Voraus nicht wissen (daher wird nicht angezeigt „x% fertig“, wenn das Herunterladen einer Datei).

Auf der anderen Seite, wenn Sie Ihren Skript ausgeführt werden sollen für eine lange Zeit abwesend (20+ Sekunden) erwarten, kann es einige Daten (Räume, zum Beispiel) zu senden benötigt, um den Browser, um zu verhindern Zeitpunkt die Verbindung aus.

Beantwortet am 09/12/2008 um 15:10
quelle vom benutzer

stimmen
5

Nachteil ist, dass Sie nicht den Inhalt sowie Spülung es afaik gzip kann, also habe ich immer eher als bündig auf gzip bevorzugt.

Einige Versionen von Microsoft Internet Explorer startet nur um die Seite anzuzeigen, nachdem sie 256 Byte Ausgangs erhalten haben, so können Sie zusätzliche Leerzeichen müssen senden vor dem Spülen in diesen Browsern zu erhalten um die Seite anzuzeigen.

Das macht diese nicht Idee, wie es padding mehr Daten scheint nicht sehr nützlich ist.

Beantwortet am 09/12/2008 um 14:58
quelle vom benutzer

stimmen
3

Ich denke, bündig ist wirklich eine Feinabstimmung Mechanismus. Browser nur etwa 8 Threads verwenden, um Inhalte zum Download (abhängig vom Browser). Wenn Sie 15 Bilder haben, startet der Browser 8 Bilder herunterzuladen und nicht irgendetwas anderes herunterladen, bis einer von ihnen abgeschlossen ist, dann startet es das nächste Bild herunterzuladen, etc. Durch die nach dem Header Spülen sind Sie im Grunde den Browser zu sagen, was es kann das Herunterladen starten. Zu der Zeit, der Rest der Seite geliefert wird (dh 0,5 Sekunden später), hat der Browser bereits abgeschlossen CSS und JavaScript-Dateien herunterzuladen. Dies würde Download-Threads für andere Inhalte freizugeben.

Sie wollen wahrscheinlich nicht bündig an einem anderen Ort zu verwenden, als direkt nach dem Header. Ein Browser wird in der Regel nicht unclosed HTML-Tags machen, so eine Teil-Seite liefert die Dinge nicht schneller angezeigt werden soll. Ältere Versionen von IE wird gar nichts angezeigt, bis eine bestimmte Menge an Daten empfangen werden, oder Seite Lieferung abgeschlossen ist.

Beantwortet am 30/03/2010 um 14:11
quelle vom benutzer

stimmen
2

Piskvor des Punkt folgender - wenn Sie ein 20s + erwarten warten, können Sie besser dran sein, eine grundlegende Seite bereitstellt (die gzip werden kann) und mit Ajax der Seite zu aktualisieren, wenn der langsame Prozess beendet ist. Sie beginnen die grundlegende Nützlichkeit von statischen HTML zu verletzen, though.

Beantwortet am 09/12/2008 um 15:17
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more