Сервис по подбору
идеального хостинга

Уменьшаем время загрузки сайта за счет сжатия файлов

Чтобы облегчить и ускорить загрузку сайта, необходимо часть файлов, которые загружаются на сайт, сжимать. Для этого на серверах используются модули deflate и zip. Эти модули ужимают данные, которые они отдают пользователю на лету и делают это каждый раз при запросе на отправку файла.

Чтобы облегчить и ускорить загрузку сайта, необходимо часть файлов, которые загружаются на сайт, сжимать. Для этого на серверах используются модули deflate и zip. Эти модули ужимают данные, которые они отдают пользователю на лету и делают это каждый раз при запросе на отправку файла.

Сжимать необходимо только данные, которые изменяются очень редко. Зачастую это файлы таблиц в стиле CSS и JavaScript-ы. Эти файлы сжимаются один раз и передаются браузеру уже в сжатом виде. Для быстрого сжатия всех CSS и JS файлов прямо на сервере нужно подключиться к серверу по SSH и перейти в каталог сайта – cd www/sitename.ru/. Теперь следует выполнить команду:

find . -regex ".*\(css\|js\)$" -execbash -c 'echoCompressing "{}" && gzip -c --best "{}" > "{}.gz"' \;

В этой команде с помощью утилиты find можно найти все файлы с расширениями .css и .js, после чего для каждого найденного файла нужно создать его сжатую копию. После этого достаточно добавить несколько элементарных правил в файл .htaccess:

RewriteEngine on

RewriteCond %{HTTP:Accept-encoding} gzip

RewriteCond %{REQUEST_FILENAME}\.gz -s

RewriteRule ^(.*)\.css $1\.css\.gz [QSA]

RewriteCond %{HTTP:Accept-encoding} gzip

RewriteCond %{REQUEST_FILENAME}\.gz -s

RewriteRule ^(.*)\.js $1\.js\.gz [QSA]

 

<FilesMatch .*\.js\.gz$>

ForceType text/javascript

Header set Content-Encoding gzip

Header append Vary Accept-Encoding

</FilesMatch>

 

<FilesMatch .*\.css\.gz$>

ForceType text/css

Header set Content-Encoding gzip

Header append Vary Accept-Encoding

</FilesMatch>

 

Теперь можно разобрать подробнее код, который добавлен в файл .htaccess.

"RewriteEngine on" – это правило включает модуль веб-сервера mod_rewrite.

"RewriteCond %{HTTP:Accept-encoding} gzip" – данное правило проверяет браузер на разрешение или возможность для сжатия файлов.

"RewriteCond %{REQUEST_FILENAME}\.gz -s" - это правило устанавливает проверку на запрашиваемый браузером файл. Проверка подтверждает присутствие или отсутствие этого файла и тестирует его формат.

"RewriteRule ^(.*)\.css $1\.css\.gz [QSA]" – правило данного вида используется для замены имени файла, который запрашивается с расширением .css, на .css.gz.

Подобным образом производится настройка для таких файлов, как js. В последних десяти строчках для файлов, которые оканчиваются на css.gz и .js.gz, создаются и устанавливаются заголовки, с помощью которых веб-браузер может корректно обработать данные, сжатые для ускорения загрузки файлов и работы сервера.