cgiでのブラウザへの出力のバッファリング

back
$| = 1;

をセットすることで、STDOUT へのバッファリングはされなくなるが、
かといって例えば
----
#!/usr/bin/perl

print "Content-type: text/plain\n\n";

for $i(0..9) {
  print "$i: hoge\n";
  sleep(1);
}
----
こんなのは、1秒ごとに hoge と少しずつ表示されない。
(10秒読み込み中画面になり、一気に hoge が10行表示される)

どうもブラウザ依存で、表示するデータの先頭から
IE(6.0 winXP) は 256byte
mozilla(1.7 winXP(Gecko/20040707~)) は 1024byte
を、ブラウザでバッファリングして、それ以降は都度表示するっぽい。

back