Предварительное сжатие статических файлов на 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    # Браузер не Safari
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$ # Имя файла не заканчивается на .gz
RewriteCond %{REQUEST_FILENAME}.gz -f     # Есть  сжатая версия файла
RewriteRule ^(.+) $1.gz [QSA,L]           # Перенаправляем запрос на сжатую версию

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

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

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

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