Предварительное сжатие статических файлов на Apache
Материал из 1GbWiki.
За основу взята статья http://www.ardamis.com/2010/07/11/compress-files-without-mod_gzip-or-mod_deflate/
1. Допишите в ваш .htaccess в корневой папке сайта (или создайте новый файл, если своего .htaccess у вас нет):
<files *.css.gz> AddType "text/css" .gz AddEncoding gzip .gz </files> <files *.csv.gz> AddType "text/csv" .gz AddEncoding gzip .gz </files> <files *.html.gz> AddType "text/html" .gz AddEncoding gzip .gz </files> <files *.htm.gz> AddType "text/html" .gz AddEncoding gzip .gz </files> <files *.js.gz> AddType "text/javascript" .gz AddEncoding gzip .gz </files> <files *.txt.gz> AddType "text/plain" .gz AddEncoding gzip .gz </files> RewriteEngine on ReWriteCond %{HTTP:accept-encoding} gzip RewriteCond %{HTTP_USER_AGENT} !Safari ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$ RewriteCond %{REQUEST_FILENAME}.gz -f RewriteRule ^(.+) $1.gz [QSA,L]
Описание условий Rewrite :
- Браузер запросил сжатие
- Браузер не Safari
- Имя файла не заканчивается на .gz
- Есть сжатая версия файла
- Перенаправляем запрос на сжатую версию
2. Зайдите на сервер по SSH и выполните команду
for file in `find . -type f -regextype awk -regex ".*\.(htm|html|js|txt|csv|css)$"`; do gzip -cf9 $file > $file.gz; done
Эта команда найдет и создаст сжатые копии всех текстовых файлов у вас на сайте. Её нужно выполнять каждый раз после обновления статических файлов.