2012-04-03 13 views
4

Wenn on_start() mit Macht es einen Unterschied,ob_start(); in PHP?

// ENABLE GZIP COMPRESSION 
ob_start(); 
ob_start('ob_gzhandler'); 

Oder ist zu tun, macht dies genau die gleiche,

// ENABLE GZIP COMPRESSION 
ob_start('ob_gzhandler'); 

Ich frage wie bei dem ersten Beispiel meiner Website ein wenig zu beschleunigen scheint.

Dank

+0

FYI, PHP von PHP-FPM startet automatisch die Pufferung der Ausgabe. Dann guckt Nginx/Apache es und sendet es an den Benutzer. – Xeoncross

Antwort

6

sollten Sie tun entweder:

ob_start(); 

oder:

ob_start('ob_gzhandler'); 

aber nicht beide. Sie können $_SERVER['HTTP_ACCEPT_ENCODING'] überprüfen, um zu sehen, ob der User-Agent gzip Codierungen akzeptiert:

if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) 
    ob_start('ob_gzhandler'); 
else 
    ob_start(); 
+2

Keine Notwendigkeit zu überprüfen, ob der Client gzip akzeptiert, der Handler wird dies für Sie tun und nicht gzip, wenn es nicht akzeptiert wird: 'Hinweis: In PHP 4.0.4 wurde ob_gzhandler() eingeführt, um das Senden von gz- verschlüsselte Daten in Webbrowsern, die komprimierte Webseiten unterstützen. ob_gzhandler() bestimmt, welche Art von Inhaltscodierung der Browser akzeptiert und gibt seine Ausgabe entsprechend zurück.' – drew010

0

Der erste startet zwei Schichten der Ausgabepufferung. Verschwendung von Erinnerung.

0

Kein Unterschied. ob_start() ist stapelbar. Das bedeutet, dass der zweite ob_start() seinen Inhalt einfach an den ersten ob_start() anfügt, wenn er geleert wird.

Verwandte Themen