Предварительное сжатие статических файлов на 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
Эта команда найдет и создаст сжатые копии всех текстовых файлов у вас на сайте. Её нужно выполнять каждый раз после обновления статических файлов.
