Сжимаем трафик lighttpd с помощью mod_compress | FreeBSD, Lighttpd

По дефолту лайти не сжимает файлы которые отдает. Настроим модуль mod_compress который позволит отдавать клиентам сжатые версии файлов (css, xml, javascript, html, txt).

Правим файл modules.conf (раскомментируем строку):

##
## mod_compress
##
include "conf.d/compress.conf"

Далее смотрим конфиг модуля, ссылку на который мы только что расомментировали. Обращаем внимание на:

compress.cache-dir = cache_dir + "/compress"

compress.cache-dir – задается в lighttpd.conf:

##
## Cache for mod_compress
##
## used in:
## conf.d/compress.conf
##
var.cache_dir   = "/var/cache/lighttpd"

По умолчанию во FreeBSD директории кэша нет – создаем руками и даем права на чтение-запись юзеру под которым работает лайти.

Далее правим строку (в compress.conf):

compress.filetype = ("text/html", "text/css", "text/xml", "text/javascript")

Добавляем типы файлов которые хотим кэшировать.

Перезапускаем lighttpd и смотрим /var/cache/lighttpd/compress
После обращений к серверу мы обнаружим в директории появятся папки со сжатыми версиями файлов которые сервер отдает клиентам. Периодически эти файлы придется чистить. Строка для задания по крону – что-то вроде:

find /var/cache/lighttpd/compress -type f -atime +30 -print0 | xargs -0 -r rm

PS: Традиционно в описании по настройке mod_compress в сети упоминают о том как включить сжатие на уровне php. Поддержим традицию. Правим php.ini

zlib.output_compression = On
zlib.output_handler = On