


Настройка веб-серверов Apache, nginx и lighttpd. lighttpd. Обзор методов клиентской оптимизации
nginx
lighttpd
У веб-сервера lighttpd (lighty) также имеются модули (mod_compress, mod_deflate), поддерживающие сжатие контента. Причём, поддерживаются не только методы gzip и deflate, но и bzip2, не рекомендуемый на данный момент из-за проблем совместимости с прокси-серверами.
Модуль mod_compress поддерживает схему со статическими сжатыми файлами, у него имеется кэш, куда складываются и где автоматически создаются сжимаемые модулем файлы.
Имя файла и его путь в кэше составляется из пути и имени запрашиваемого файла, плюс имя метода сжатия и ETag. Соответственно, если меняется ETag, сервер создаёт файл с другим именем и отдаёт свежую копию.
Очистка кэша оставлена на усмотрение пользователя и может производиться, например, такой вот командой (удаление файлов, которые были модифицированы более 10 дней назад):
find /var/www/cache -type f -mtime +10 | xargs -r rm
По сравнению с остальными рассматриваемыми модулями, mod_compress имеет очень мало возможностей для конфигурирования. Оптимизированный конфигурационный файл привед?н ниже.
# Lighttpd, mod_compress
# включаем сжатие
server.modules += ("mod_compress")
# включаем методы, которые будем поддерживать, здесь не указан bzip2
# из-за проблем с прокси и deflate из-за проблем с Konqueror
compress.allowed-encodings = ("gzip")
# директорий, куда складывается кэшированные пресжатые файлы
compress.cache-dir = "/var/www/cache/"
compress.filetype = ("text/plain", "text/html", "text/xml", "application/xml", "application/rss+xml", "image/x-icon")
# не сжимать контент, размер которого больше, чем 500KiB
compress.max-filesize = 500000
# боремся с проблемами в браузерах, основываясь на URL
$HTTP["url"] =~ "\.(css|js)$" {
$HTTP["useragent"] != "Firefox/([0-2]\.|3\.0)" {
$HTTP["useragent"] != "Chrome/2|Konqueror" {
compress.filetype += ("text/css", "application/x-javascript", "application/javascript", "text/javascript")
}
}
}
$HTTP["useragent"] =~ "MSIE [4-6]" {
$HTTP["useragent"] != "SV1|Opera" {
compress.filetype = ()
}
}
Модуль mod_deflate, который доступен в версии 1.5.0 и выше (или как патч к версии 1.4.x), предназначен для сжатия контента «на лету».
# Lighttpd, mod_deflate
# включаем сжатие
server.modules += ("mod_deflate")
deflate.enabled = "enable"
# максимальное сжатие
deflate.compression-level = 9
deflate.mem-level = 9
deflate.window-size = 15
# включаем методы, которые будем поддерживать, здесь не указан bzip2
# из-за проблем с прокси и deflate из-за проблем с Konqueror
deflate.allowed_encodings = ("gzip")
# минимальный размер ответа, который будем сжимать
deflate.min-compress-size = 1000
# из-за того, что в зависимости от браузера мы не может отключать
# сжатие JS и CSS, не включаем их сжатие вообще
deflate.mimetypes = ("text/plain", "text/html", "text/xml", "application/xml", "application/rss+xml", "image/x-icon")
# минимальный размер блока для сжатия
deflate.work-block-size = 512
# отключаем сжатие для старых IE
$HTTP["useragent"] =~ "MSIE [4-6]" {
$HTTP["useragent"] != "SV1|Opera" {
deflate.enabled = "disable"
}
}
# боремся с проблемами в браузерах, основываясь на URL
$HTTP["url"] =~ "\.(css|js)$" {
$HTTP["useragent"] != "Firefox/([0-2]\.|3\.0)" {
$HTTP["useragent"] != "Chrome/2|Konqueror|Safari" {
compress.filetype += ("text/css", "application/x-javascript", "application/javascript", "text/javascript")
}
}
}