Gzip сайт со встроенным кодом PHP
По этой статье
достаточно добавить это в начале кода
<?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) ob_start("ob_gzhandler"); else ob_start(); ?>
Я пытался, но время загрузки увеличилось более чем на 5 секунд (+100% времени)
Разве это не рекомендуется? я попробую как-нибудь еще?
3 ответа
Пример кода, приведенный в связанной статье, каким-то образом вводит в заблуждение (хотя это не решает проблему скорости заранее).
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
Документы
Сжатие занимает некоторое время и ресурсы с сервера, но передача происходит быстрее. Это зависит.
Если у вас быстрый сервер, он должен быть быстрым. Это зависит от
- Подключение к сети
- Ресурсы сервера (такие как процессор)
Тем не менее, я не думаю, что это необходимо, я думаю, что если у вас есть плагин сжатия gzip на вашем сервере, это gziping автоматически.
Попробуйте этот тест без вашего кода, а затем с
Просто используйте следующий код.
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
} else{
ob_start();
?>