Доброго времени суток
Может кому пригодится, настроил сжатие контента с использованием mod_compress.
В моём случае размер сгенерированных страниц на текущий момент доходит до 9 мегабайт, а в сжатом виде - 1,7
И так, по порядку
1. /opt/etc/lighttpd/lighttpd.conf
Включаем mod_compress
Code:
server.modules = (
...
"mod_compress",
...
)
Создаём каталог для сжатых файлов
Code:
mkdir -p /opt/tmp/lighttpd/cache/compress/
и указываем на него в конфиге
Code:
...
compress.cache-dir = "/opt/tmp/lighttpd/cache/compress/"
...
Указываем что сжимать
Code:
...
compress.filetype = ("application/x-javascript", "application/javascript", "text/javascript", "text/x-js", "text/css", "text/html", "text/plain")
...
2. /opt/etc/php.ini
Дополнительно можно указать на сжатие php
Code:
...
zlib.output_compression = On
zlib.output_handler = On
...
3. Очистка каталога сжатых файлов от устаревшей информации.
Скрипт от Orex, назовём его clearcompress и положим в /opt/etc
Code:
#!/bin/sh
DIR="$1"
for file in `ls -1 "$DIR" | grep '^.*gzip-.*$' | sed 's/ /~~~bs~~~/g'`
do
name=`echo "$file" | awk -F "-" '{print $1}'`
for subfile in `ls -t "$DIR" | grep ^$name-.*\$ | sed -e '1d' -e 's/ /~~~bs~~~/g'`
do
rm "${DIR}/`echo "${subfile}" | sed 's/~~~bs~~~/ /g'`"
done
done
exit 0;
Этот скрипт удаляет все файлы, сгруппированные по префиксу (в данном случае '*gzip-'), оставляя один самый свежий. Например, при обработке каталога /opt/tmp/lighttpd/cache/compress из файлов
Code:
[Sep 16 13:33] Double.html-gzip-2883672-9165565-1347787944
[Sep 16 02:28] Another.html-gzip-2883620-1043150-1347745318
[Sep 15 23:36] Begin.html-gzip-2883711-354959-1347737586
[Sep 15 23:36] Content.html-gzip-2883623-424402-1347737434
[Sep 15 23:35] Another.html-gzip-2883620-1043150-1347607303
[Sep 15 23:33] File.html-gzip-2883673-9141871-1347737585
[Sep 15 23:24] File.html-gzip-2883673-9165565-1347736998
[Sep 14 12:20] Content.html-gzip-2883623-475162-1347607301
[Sep 14 12:19] File.html-gzip-2883673-9163898-1347601490
[Sep 13 02:37] File.html-gzip-2883673-9165565-1347745334
останутся только самые свежие
Code:
[Sep 16 13:33] Double.html-gzip-2883672-9165565-1347787944
[Sep 16 02:28] Another.html-gzip-2883620-1043150-1347745318
[Sep 15 23:36] Begin.html-gzip-2883711-354959-1347737586
[Sep 15 23:36] Content.html-gzip-2883623-424402-1347737434
[Sep 15 23:33] File.html-gzip-2883673-9141871-1347737585
Чтобы скрипт обрабатывал все вложенные подкаталоги, запускаем его так
Code:
#!/bin/sh
find /opt/tmp/lighttpd/cache/compress -type d -exec /opt/etc/clearcompress {} \;
Этот код логично поместить в cron.daily
4. Перезапускаем lighttpd и радуемся
P.S. Взято в том числе отсюда, кроме скрипта, предоставленным Orex
P.S. Небольшое дополнение
Создал новостную ленту RSS и оказалось полезным сжимать также файлы .xml, но простого добавления MIME-type "application/xml" в конфиг /opt/etc/lighttpd.conf оказалось недостаточно
Code:
compress.filetype = ("application/x-javascript", "application/javascript", "text/javascript", "text/x-js", "text/css", "text/html", "text/plain", "application/xml")
сжатие заработало, когда здесь же подправил - вместо
Code:
...
".xml" => "text/xml",
...
прописал
Code:
...
".xml" => "application/xml",
...