Пример кода, приведенный в связанной статье, каким-то образом вводит в заблуждение (хотя это и не отвечает на вашу проблему скорости заранее).
Обратный вызов ob_gzhandler
работает прозрачно, поэтому он действует только тогда, когда браузер действительно поддерживает некоторыевид сжатия (не только gzip
, как при ручной проверке), поэтому ручная проверка не требуется.Вместо этого вы можете просто написать:
ob_start("ob_gzhandler");
Что означает
ob_start();
, если браузер не поддерживает сжатие.В качестве альтернативы вы можете установить соответствующее значение INI.См. ob_start
Документы и ob_gzhandler
Документы .
Если вы хотите измерить разницу в скорости, сравните только ob_start()
(без сжатия) с ob_start("ob_gzhandler")
(сжатие) и не буферизуйте с не буферизирующими.
Затем имейте в виду, что gzhandlerработает с чанками, поэтому может создавать выходные данные только при наличии определенного объема данных в буфере.Это можно настроить с помощью настройки ini, но не функции обратного вызова IIRC.См. zlib.output_compression
Документы .