NetSago
Вход
Войти

Как присоединиться?
Меню
Главная
События
 Заметки
Статьи
Теги
Поиск
О Проекте
Ссылки
Наше
RSS События по RSS
RSS Заметки по RSS
netsago NetSago
Популярное
Руководство по получению прибыли от Свободных и Открытых Проектов by Джон Эндрюс

Настройка ядра с помощью sysctl by n0xi0uzz

Заметки — Как сэкономить трафик с помощью mod_compressed для lighttpd
Назад в Заметки

Как сэкономить трафик с помощью mod_compressed для lighttpd
scofield



Теги: mod_compressed lighttpd


В этой заметке я опишу, как настроить mod_compress для веб-сервера lighttpd (на Debian Squeeze). mod_compress дает lighttpd возможность сжимать файлы и передавать их клиентам (например, браузерам), которые могут обрабатывать сжатый контент, что умеет делать большинство современных браузеров. С помощью mod_compress вы сможете сжать HTML, CSS, JavaScript, тестовые или XML файлы в среднем на 20-30% от их оригинальных размеров, что позволит сэкономить трафик на вашем сервере.

Включение и настройка mod_compress


Откройте в текстовом редакторе файл /etc/lighttpd/lighttpd.conf и проверьте, активен ли mod_compress в блоке server.modules (должен быть активен по умолчанию в Debian Squeeze):
server.modules = (
         "mod_expire",
         "mod_access",
         "mod_alias",
         "mod_compress",
         "mod_redirect",
 #       "mod_rewrite",
 )
 [...]

Также найдите ниже в файле следующие строки:
[...]
 compress.cache-dir          = "/var/cache/lighttpd/compress/"
 compress.filetype           = ("application/x-javascript", "text/css", "text/html", "text/plain")
 [...]

Директива compress.cache-dir указывает lighttpd хранить сжатые файлы в директории /var/cache/lighttpd/compress/; директива compress.filetype указывает, какие типы файлов следует сжимать (обычно это Javascript, CSS, HTML и обычные текстовые файлы). Так как файлы javascript могут иметь разные типы файлов на каждом сервере, мы должны расширить эту директиву следующим образом:
[...]
 compress.filetype           = ("application/x-javascript", "application/javascript", "text/javascript", "text/x-js", "text/css", "text/html", "text/plain")
 [...]

Затем убедитесь, что директория /var/cache/lighttpd/compress/ существует и права на неё принадлежат пользователю и группе www-data.
ls -la /var/cache/lighttpd/compress/
 
 root@server1:~# ls -la /var/cache/lighttpd/compress/
 total 8
 drwxr-xr-x 2 www-data www-data 4096 Nov 12 12:45 .
 drwxr-xr-x 4 www-data www-data 4096 Feb 17 17:57 ..
 root@server1:~#

Если директории не существует, создайте её:
mkdir -p /var/cache/lighttpd/compress/
 chown www-data:www-data /var/cache/lighttpd/compress/

Теперь перезапустите lighttpd:
/etc/init.d/lighttpd restart


Сжатие PHP


В PHP имеется собственная поддержка сжатия, однако она может не обрабатываться lighttpd. Чтобы включить сжатие PHP, откройте /etc/php5/cgi/php.ini и установите параметр zlib.output_compression на On
[...]
 ; Transparent output compression using the zlib library
 ; Valid values for this option are 'off', 'on', or a specific buffer size
 ; to be used for compression (default is 4KB)
 ; Note: Resulting chunk size may vary due to nature of compression. PHP

        

; outputs chunks that are few hundreds bytes each as a result of ; compression. If you prefer a larger chunk size for better ; performance, enable output_buffering in addition. ; Note: You need to use zlib.output_handler instead of the standard ; output_handler, or otherwise the output will be corrupted. ; http://php.net/zlib.output-compression zlib.output_compression = On [...]

Перезапустите lighttpd:
/etc/init.d/lighttpd restart


Очистка директории сжатия lighttpd


Директория, в которой lighttpd хранит сжатые файлы (по умолчанию /var/cache/lighttpd/compress/), должна регулярно очищаться от старых, неиспользуемых файлов. В Debian Squeeze в /etc/cron.daily/lighttpd можно найти задание cron, которое выполняет это ежедневно:
#!/bin/sh
 # Cleanup lighttpd compress cache
 
 cache=/var/cache/lighttpd
 if test -d "$cache/compress"; then
     su -s /bin/sh -c "find $cache/compress -type f -atime +30 -print0 | xargs -0 -r rm" www-data
 fi
 if test -d "$cache/uploads"; then
     su -s /bin/sh -c "find $cache/uploads -type f -atime +1 -print0 | xargs -0 -r rm" www-data
 fi

Это задание производит очистку директории от файлов, к которым не было обращений в последние 30 дней.

Если /etc/cron.daily/lighttpd не существует, вы можете создать задание самостоятельно:
crontab -e
 23 4 * * * /usr/bin/find /var/cache/lighttpd/compress -type

(Это задание будет выполняться каждый день в 4:23)

Тестирование


Для того, чтобы проверить работоспособность настроек, вы можете скачать плагин для Firefox под названием Live HTTP Headers и открыть текстовый файл в браузере (например, статичную HTML-страницу). В выводе Live HTTP Headers, вы должны увидеть, что клиент (Firefox) отправляет серверу заголовок Accept-Encoding: gzip,deflate для того, чтобы сообщить о поддержке сжатого контента в форматах gzip и deflate; сервер должен сжать файл и отправить его с заголовком Content-Encoding: gzip.

Если вы проверите директорию /var/cache/lighttpd/compress/, вы увидите, что она теперь не пуста. Теперь она должна хранить сжатые версии запрошенных файлов:
ls -la /var/cache/lighttpd/compress/
 
 root@server1:~# ls -la /var/cache/lighttpd/compress/
 total 16
 drwxr-xr-x 2 www-data www-data 4096 Mar  7 16:32 .
 drwxr-xr-x 4 www-data www-data 4096 Feb 17 17:57 ..
 -rw———- 1 www-data www-data 3102 Mar  7 16:32 howto.html-gzip-237485-9070-1299510809
 -rw———- 1 www-data www-data 1562 Mar  7 16:30 index.lighttpd.html-gzip-237105-3585-1297961821
 root@server1:~#

Язык
English/Английский
Поиск
Расширенный Поиск
Ошиблись?
Если вы обнаружили ошибку на сайте, пожалуйста, сообщите нам о ней.
Посчитали
0 / 0
К нам сегодня роботы не заходили, человеки могут быть спокойны.

Зарегистрированных пользователей: 0
Онлайн: 0

Время генерации: 0.020 с
NetSago.v2.β © [2006;∞)  Neunica