Отключите приемный буфер в Firefox (или других браузерах) - PullRequest
1 голос
/ 02 августа 2011

У меня возникли проблемы с буферизацией в веб-браузерах (не с чахингом).

Я называю этот скрипт php:

sleep(5);
echo '1st step';
echo (str_repeat(' ',256));
sleep(5);
echo '<br />';
echo '2nd step';

Буфер вывода отключен на php (мы подтвердим это позже)

при вызове этого скрипта как с Chromium 12, так и с Firefox 5 я получил такой результат:

«ожидающий» анимированный круг (серый) работает в течение ~ 5 секунд, затем «переносящий» анимированный круг (оранжевый) запускается в течение ~ 5 секунд, и, наконец, у меня отображается весь результат.

Моя первоначальная цель, как вы и ожидали, - подождать 5 секунд, затем увидеть «1-й шаг», снова подождать 5 секунд, а затем увидеть«2-й шаг» отображается.

подсказки

  • php или apache ничего не буферизуют, поскольку анимированный круг переключается с «ожидания» на «получение» через 5 секунд (такбраузер получил что-то из эхо «1-го шага»!)

    • Я попытался установить размер кэша Firefox равным 0, чтобы механизм кэширования был обойден ... но все равно не работал.

    • Я читал, что некоторые браузеры могут ждать, пока они не получат 256 байтов, прежде чем они начнут отображать содержимое.Вот почему я добавил "echo (str_repeat ('', 256))" .. .. но это ничего не решает.

    • Я также попытался установить network.buffer.cache.countи опции network.buffer.cache.size в 0 в firefox о: config, я не знаю, была ли эта опция связана с моей проблемой, но она все еще не работает ..

Есть идеи?

Спасибо,

1 Ответ

3 голосов
/ 03 августа 2011

О, я думаю, мне нужно сделать ответ, а не комментарий, чтобы вы могли принять его.

Размер буфера сниффинга в кодировке HTML5 составляет 512 байт. Таким образом, ответ должен иметь 512 байтов заполнения или установить кодировку (через тег <meta> или заголовок HTTP).

...