19 января 2016

Ускорение работы сайта или fake CDN для Drupal 7

Алексей Доронин
Руководитель, разработчик, дизайнер

Браузеры одновременно могут обрабатывать около 6—8 http-запросов. Чтобы ускорить загрузку статики (картинки, css и js-файлы и так далее) можно создать эмуляцию CDN и отдавать статику с нескольких доменов. «Гонок» в браузере будет меньше и повысится количество одновременно обрабатываемых запросов.

1. Создадим два поддомена — один для изображений, другой для JS и CSS файлов. В DNS пропишем IP адрес указывающий на сервер. Например, возьмём такие поддомены: st1.mydomain.com и st2.mydomain.com

2. Создадим конфиги для поддоменов в NGINX, примерно такие:

server {
  server_name st1.mydomain.com;
  listen 80;
  root /var/www/mydomain.com;
  gzip_static on;
  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
    log_not_found off;
  }
}

Root указывает на корень нашего сайта, адреса картинок и файлов полностью будут совпадать.

3. Ставим модуль CDN, в его настройках /admin/config/development/cdn: Testing или Enabled

Далее в /admin/config/development/cdn/details прописываем:

http://st1.mydomain.com|.js .css
http://st2.mydomain.com/|.jpg .gif .png

Это значит, что JS и CSS будут отдаваться с одного домена, а JPG, GIF, PNG, с другого.  

В итоге, модуль CDN сам подменит все пути на необходимые, в соответствии с указанными правилами.