Веб-страница постоянно не работала при первой загрузке. Почему 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, жаловались на то, что заголовки уже отправлены. Это остановило код в своих треках.