Уменьшаем время загрузки сайта за счет сжатия файлов
Чтобы облегчить и ускорить загрузку сайта, необходимо часть файлов, которые загружаются на сайт, сжимать. Для этого на серверах используются модули 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, создаются и устанавливаются заголовки, с помощью которых веб-браузер может корректно обработать данные, сжатые для ускорения загрузки файлов и работы сервера.