Веб-страница постоянно не работала при первой загрузке. Почему output_buffering вызывает проблемы?

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

Эта проблема

После обновления до wampserver 2.2 одна из моих веб-страниц постоянно не работала при первой загрузке в браузере. Это случилось с Internet Explorer, Chrome, Firefox и Safari. При перезагрузке страница работала во всех браузерах.

исправление

Я решил реализовать лучшее решение для отладки и при этом непреднамеренно решил мою проблему. Когда я установил output_buffering =On в php.ini страница работала корректно.

мой код

Я не буду вдаваться в подробности здесь. Меня больше интересует теория о том, как output_buffering может вызывать проблемы. Кроме того, я думаю, что мой код будет скорее бровью, чем помощью.

  • Я использовал сессии ajax и joomla (внешний скрипт), чтобы получить информацию для страницы.
  • Я считаю, что когда output_buffering был выключен, сеанс joomla не смог получить значения. Я пока не могу это подтвердить.

Мой вопрос

Каким образом можно output_buffering= Off неблагоприятно повлиять на код? Зачем?

3 ответа

"Я использовал сессии ajax и joomla (внешний скрипт) для извлечения информации для страницы". Это твоя проблема. Вы извлекаете контент, который изменяется в течение определенного промежутка времени.

Обратитесь к этому, это может помочь вам понять, как это работает: /questions/24413962/chto-takoe-vyihodnaya-buferizatsiya/24413968#24413968

Буферизация вывода просто позволяет вам задерживать отображение данных, которые в противном случае были бы немедленно распечатаны в браузере. Они используются в основном с шаблонизаторами для хранения неопределяемых шаблонов, чтобы их можно было заполнить значениями. Я предполагаю, что Joomla зависит от буферизации вывода, чтобы заполнить правильные значения для своих шаблонов, что объясняет, почему вы видите неправильный вывод.

Как оказалось, один из файлов, вызываемых веб-страницей, был закодирован неправильно. Однажды я закодировал это как UTF8 without BOM моя проблема была в основном решена. Мой скрипт будет работать без включенного output_buffering.

Другая часть проблемы заключалась в том, что некоторые из сценариев, которые использовали Firebug, жаловались на то, что заголовки уже отправлены. Это остановило код в своих треках.

Другие вопросы по тегам