Nginx, настраиваем кэширование и сжатие данные — ускоряем скорость загрузки сайта

Пятница, 07 февраля 2014 00:18

Давно минули те старые добрые времена, когда сайты были сделаны на голом HTML и их страницы весили несколько десятков килобайт. А интернет был на dial-up.

Страницы современных сайтов весят уже несколько сотен килобайт, а частенько и несколько мегабайт. Картинки, скрипты, файлы стилей CSS — всё это непременные атрибуты нормального современного сайта и без них никак. А весит всё это «счастье» совсем не мало, и каждый раз посетители, зашедшие на ваш сайт, загружают всё это на свой компьютер. И пока загрузка не завершится, в браузере страница не откроется.

Рассмотрим метод борьбы с этой проблемой посредством вебсервера Nginx. Суть в том, что мы сделаем 2 вещи — сожмём все статические файлы (скрипты, файлы стилей) посредством gzip, и закэшируем их вместе с картинками в кэше браузера посетителя, чтобы они каждый раз не загружались с сайта, а брались прямо из кэша на компьютере посетителя сайта.

Все настройки и команды далее идут для сервера с Centos, однако настройка серверов с другими системами мало чем отличается.

Настройка сжатия данных посредством Nginx.

Открываем файл конфигурации Nginx, расположенный по адресу /etc/nginx/nginx.conf

И в секцию http {…}, которая находится в начале файла добавляем то, чего там нет из примера ниже:

gzip on;
gzip_static on;
gzip_comp_level 5;
gzip_min_length 1024;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/json;

Настройка кэширования статических файлов в кэше браузера пользователя, посредством Nginx.

В том же файле /etc/nginx/nginx.conf спускаемся ниже, находим конструкцию server для нужного сайта и дописываем туда:

location ~* ^.+.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
root /var/www/user/data/www/site.ru;
expires 7d;

где expires 7d — это количество дней, сколько кэш статических файлов должен храниться на компьютере пользователя. Если вы не вносите правки в css, js, файлы своего сайта и не меняете картинки, то имеет смысл этот параметр увеличить, вплоть до нескольких месяцев или даже до года.

Для наглядности приводим участок секции server из сервера, в котором Nginx был установлен стандартными средствами панели ISPmanager:

server {
server_name site.ru www.site.ru;
listen 111.121.152.21;
disable_symlinks if_not_owner from=$root_path;
set $root_path /var/www/user/data/www/site.ru;
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root $root_path;
access_log /var/www/nginx-logs/user isp;
access_log /var/www/httpd-logs/site.ru.access.log ;
error_page 404 = @fallback;
}

А теперь мы добавим сюда expires 7d, теперь это будет выглядеть вот так:

server {
server_name site.ru www.site.ru;
listen 111.121.152.21;
disable_symlinks if_not_owner from=$root_path;
set $root_path /var/www/user/data/www/site.ru;
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root $root_path;
expires 7d;
access_log /var/www/nginx-logs/user isp;
access_log /var/www/httpd-logs/site.ru.access.log ;
error_page 404 = @fallback;
}

Перезагружаем Nginx командой:

service nginx restart

Заходим на свой сайт и радуемся, он теперь стал загружаться в несколько раз быстрее. А вес страниц сайта снизился с нескольких мегабайт до пары десятков килобайт!

Данная статья будет полезна для владельцев виртуальных и выделенных серверов, так как у пользователей виртуального хостинга нет доступа к редактированию конфигурации Nginx. Однако клиенты виртуального хостинга, предлагаемого нашей организацией всегда могут обратиться в службу поддержки, и наши системные администраторы внесут необходимые настройки для вашего сайта.


Спасибо за статью. Все просто и понятно.

3rd.Mate 3rd.Mate | Суббота, 25 октября 2014 12:34


Реально скорость загрузки сайта увеличилась в несколько раз.
Спасибо!

Виталий Виталий | Пятница, 06 февраля 2015 02:42


Оставить комментарий

  • Способы
    Оплаты:
  • visa
  • mastercard
  • qiwi
  • webmoney
  • yandex money
  • sberbank
  • mts bank
  • zpayment
  • liqpay
  • alfabank white
  • paxum e1411320249623
Copyright © 2012 - 2018 WebPatron Ltd. All rights reserved.