Предварительное сжатие статических файлов на 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 :

  1. Браузер запросил сжатие
  2. Браузер не Safari
  3. Имя файла не заканчивается на .gz
  4. Есть сжатая версия файла
  5. Перенаправляем запрос на сжатую версию

2. Зайдите на сервер по SSH и выполните команду

for file in `find . -type f -regextype awk -regex ".*\.(htm|html|js|txt|csv|css)$"`; do gzip -cf9 $file > $file.gz; done

Эта команда найдет и создаст сжатые копии всех текстовых файлов у вас на сайте. Её нужно выполнять каждый раз после обновления статических файлов.

Личные инструменты