Перед тем, как ob_gzhandler () сжимает данные, он проверит, какой тип кодировки примет браузер, если его gzip, или выкачает (возможно, и другие вещи, я не уверен), что он напечатает вывод с этим сжатием. Поддерживаются все популярные браузеры, и даже если вы пишете собственный код или беспокоитесь о пауках поисковых систем, запросчик HTTP должен отправить правильный заголовок HTTP, сообщающий, что он принимает сжатые страницы.
И не беспокойтесь, если браузер не поддерживает сжатые страницы, эта функция возвращает FALSE и сжатие не применяется.
Вот еще кое-что от php man:
ob_start
Эта функция включает буферизацию вывода. Пока активна буферизация вывода, из сценария не отправляется вывод (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере.
Содержимое этого внутреннего буфера может быть скопировано в строковую переменную с помощью ob_get_contents (). Чтобы вывести то, что хранится во внутреннем буфере, используйте ob_end_flush (). В качестве альтернативы, ob_end_clean () будет молча отбрасывать содержимое буфера.
Предупреждение
Некоторые веб-серверы (например, Apache) изменяют рабочий каталог скрипта при вызове функции обратного вызова. Вы можете изменить его обратно, например, chdir (dirname ($ _ SERVER ['SCRIPT_FILENAME'])) в функции обратного вызова.
Выходные буферы являются наращиваемыми, то есть вы можете вызывать ob_start (), пока активна другая ob_start (). Просто убедитесь, что вы вызываете ob_end_flush () соответствующее количество раз. Если несколько функций обратного вызова вывода активны, выходные данные фильтруются последовательно через каждую из них в порядке вложенности.
Снова эта часть скопирована из руководства по PHP!