Есть много проблем с тем, что вы делаете здесь.
Обычно конфигурация Apache, которую вы показали нам здесь, должна обрабатывать сжатие, но это зависит от порядка, в котором сложены обработчики. Учитывая сложность, связанную с созданием контента для текущего запроса, выходного буфера и воспроизведением сохраненного файла, ваша жизнь будет намного проще, если ваш PHP-код просто игнорирует сжатие, и это обрабатывается веб-сервером. Итак, начните пытаться анализировать одну проблему за раз: посмотрите, что отвечает веб-сервер, когда вы запрашиваете простой HTML, сгенерированный PHP. Если он не сжат, вернитесь и посмотрите на свой веб-сервер (проверяли, действительно ли mod_delfate загружен успешно?).
Сжатие и сокращение кэшированной страницы PHP
Сжатие работает за счет уменьшения избыточности. Минификация работает за счет сокращения избыточности. Сжатие уменьшит размер примерно на 80%. Если ваш HTML не содержит много избыточных тегов (то есть "<tag></tag>
") И ваш минификатор не достаточно умен, чтобы идентифицировать и удалять их (ни один из которых я не видел) ИЛИ огромное количество пробелов, минификация уменьшит размер только на до 5%. Эффекты не аддитивны.
Вы добавляете много кода (обработка, программирование) и усложняете к своему коду, используя оба, и в результате не увидите никакой большой выгоды.
Есть ли способ минимизировать кэшированный HTML
Это было бы глупо.
Вы не можете предполагать, что клиенты будут принимать сжатый контент и какие методы сжатия они будут поддерживать. Возможно, вы знаете, что весь ваш трафик направляется в веб-браузеры, которые поддерживают (скажем) gzip - но вы не знаете, сколько из них используют поврежденное мозгом программное обеспечение AV или какой-либо другой прокси-сервер для передачи данных. Поэтому, если вы сохраняете сжатое кэшированное представление, вам нужно заново реализовать логику обнаружения возможностей клиента и разрешить декомпрессию в вашем коде.
То, что схема именования содержит только один файл страницы / кэша, скорее говорит о том, что у вас нет огромного количества данных для хранения в вашем серверном кэше, а дисковое пространство дешевое. Храните данные кэша без сжатия.
ExpiresByType text / html "доступ плюс 0 секунд"
Это в лучшем случае избыточно.
$ cachefile = 'cached-files /'. Date ('M-d-Y'). '. Php';
У вас могут возникнуть серьезные проблемы с безопасностью, если вы не очень осторожны в предотвращении XSS - уязвимость XSS можно использовать в качестве эксплойта для внедрения кода на вашем сервере.
включают ($ cachefile);
Если вы знаете, что файл должен содержать только HTML, тогда почему вы просите PHP проанализировать / скомпилировать / выполнить его? В дополнение к проблеме безопасности это создает накладные расходы на обработку и заставит кэш кода операции продолжать заполняться и сбрасываться.
Существует также риск того, что кто-то испортит ваш кеш, потянув за вилку по запросу до того, как файл кеша будет записан.
Рассмотрим:
<?php
ignore_user_abort(1);
...
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile))
{
while (ob_get_level()) ob_end_flsuh();
readfile($cachefile);
exit;
}
...