Как включить mod_deflate для файлов PHP?

У меня есть учетная запись Liquid Web VPS, я убедился, что mod_deflate установлен и работает / активен.

Я использовал gzip для своих css и js-файлов через PHP, а также для самих файлов PHP … Однако теперь я пытаюсь сделать это с помощью mod_deflate и, похоже, отлично работает для всех файлов, кроме файлов PHP. (Файлы Txt работают нормально, css, js, статические HTML-файлы, просто ничего не генерируется через файл PHP.) Как это исправить?

(Я использовал параметр «Сжатие всего содержимого» в разделе «Оптимизировать веб-сайт» в cPanel, который создает файл .htaccess в домашнем каталоге (не public_html, на один уровень выше этого) с точно таким же текстом, как «сжимать все, кроме изображений» "на http://httpd.apache.org/docs/2.0/mod/mod_deflate.html )

.htaccess файл:

<IfModule mod_deflate.c> SetOutputFilter DEFLATE <IfModule mod_setenvif.c> # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48 # the above regex won't work. You can use the following # workaround to get the desired effect: BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary </IfModule> <IfModule mod_headers.c> # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary </IfModule> </IfModule> 

Прошло некоторое время с тех пор, как я опубликовал этот вопрос – в итоге я включил сжатие zlib через PHP.ini, поэтому zlib сжимает вывод PHP, а mod_deflate сжимает все остальное.

Я думаю, причина, по которой он не работал (mod_deflate не сжимал вывод PHP) имеет отношение к PHP, работающему как CGI, а не к Apache DSO …

PHP-файлы обычно содержат text/html содержимое (хотя вы также можете создавать изображения и почти все). Файлы PHP никогда не отправляются клиенту: он обрабатывается для создания контента ( text/html или изображения). Вы ищете gzip для этого контента.

Вы можете добавить zlib.output_compression = On в конфигурационный файл php.ini. Это сжимает выход независимо от mod_deflate.

Вся конфигурация устарела. Он может и должен быть удален сейчас: Netscape 4 не существует уже давно, и настройка Vary: User-Agent излишне затрудняет кэширование.

Единственная конфигурация mod_deflate, в которой вы нуждаетесь, – это одна строка, чтобы включить дефляцию для сжимаемых типов носителей, используя AddOutputFilter для выбора сжимаемых файлов по расширению или AddOutputFilterByType чтобы выбрать их с помощью возвращаемого Content-Type .

Вам нужно переместить директивы mod_deflate вне раздела Directory. Определите свои правила глобально для mod_deflate в вашем httpd.conf