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(); 
?>
Другие вопросы по тегам