База знаний

Список статей
Наверх

Использование CDN

Зачастую облачное хранилище используется для организации массовой раздачи файлов (графики, картинок, CSS сайта, видео) большому количеству географически распределенных клиентов. Как правило, это файлы большого объема: например, фотографии, аудио- и видеозаписи, типографские макеты и так далее, их можно загружать на высокой скорости из любой точки планеты, используя CDN.

В рамках услуги Облачное хранилище клиентам доступен CDN провайдера Akamai.

CDN (content delivery network) - географически распределенная сеть доставки контента, состоящая из основного узла (англ. origin) и кэширующих точек присутствия (англ. edges) в разных уголках мира.

При обращении к основному серверу пользователь перенаправляется к ближайшей точке присутствия, благодаря чему сетевой маршрут между серверами сокращается, и сайт работает гораздо быстрее с точки зрения пользователя.

Преимущества CDN, получаемые владельцами сайтов:

  • увеличение скорости доставки контента;

  • снижение нагрузки на основной сервер - весь тяжелый контент скачивается с кэширующих серверов;

  • снижение расходов на развитие инфраструктуры.

Начало работы с CDN в облачном хранилище

Чтобы начать пользоваться CDN достаточно загрузить файл в публичный контейнер Облачного хранилища. CDN будет сконфигурирован и готов к работе автоматически. Далее можно использовать домен вида ******.selcdn.com, где ****** - это уникальный номер, автоматически сгенерированный для вашего аккаунта в Облачном хранилище.

Если вы хотите настроить параметры CDN, в разделе CDN панели управления создайте CDN-ресурс, указав в качестве источника контента контейнер в Облачном хранилище. Подробнее читайте в статье базы знаний.

Для проверки работоспособности CDN выполните следующие действия:

  1. Создайте публичный контейнер и загрузите файл.
    Примечание: CDN Akamai кэширует файлы размером до 1.8 Гб.

  2. Откройте ссылку на файл, нажав на соответствующую кнопку. 

    image

  3. В открывшемся окне отобразится список ссылок на файл.

    image

  4. Скопируйте соответствующую ссылку, нажав кнопку Копировать, и вставьте ссылку в адресную строку браузера.

Файл будет доставлен на ваш компьютер через кэширующие серверы Akamai.

Первоначально объект будет загружен в кэширующий слой CDN из Облачного хранилища, но последующие запросы к этому файлу будут обработаны уже напрямую из кэша.

Проверить, через какой сервер раздается файл, можно в консоли, введя команду: 

dig <your_subdomain>.selcdn.com

Результат вывода с akamai.net. :

...
;; ANSWER SECTION:
<your_subdomain>.selcdn.com.          600    IN    CNAME         selectel.inst.mdc.edgesuite.net.
selectel.inst.mdc.edgesuite.net.     9730    IN    CNAME         a610.g.akamai.net.
a610.g.akamai.net.                     6     IN     A            188.43.75.98
a610.g.akamai.net.                     6     IN     A            188.43.75.96
...

Для просмотра обращения по ссылке с указанием .ru введите команду:

dig <your_subdomain>.selcdn.ru

Результат вывода команды с адресами selcdn.ru:

...
;; ANSWER SECTION:
<your_subdomain>.selcdn.ru.        468     IN      CNAME   selcdn.ru.
selcdn.ru.                         815     IN      A       92.53.68.203
selcdn.ru.                         815     IN      A       92.53.68.205
selcdn.ru.                         815     IN      A       92.53.68.201
selcdn.ru.                         815     IN      A       92.53.68.202
selcdn.ru.                         815     IN      A       92.53.68.204
...

Подключение общего SSL для CDN

Если вам требуется раздавать файлы через CDN по протоколу https, вы можете заказать домен третьего уровня вида ***-a.akamaihd.net. Подключения к нему будут защищены общим TLS сертификатом нашего партнёра Akamai Technologies. Для получения такого доступа необходимо отправить запрос через тикет-систему, указав в нем:

  1. Причину подключения пользовательского домена.
  2. Контейнер, к которому надо подключить домен.
  3. Префикс *** либо полный домен вида ***-a.akamaihd.net.

После подключения необходимый домен отобразится в поле Дополнительные домены в интерфейсе панели управления.

image

Для отключения дополнительного домена необходимо также отправить тикет с соответствующим запросом.

Тарификация

При первоначальном обращении к объекту через CDN выполняется загрузка этого объекта в кэш. Этот трафик оплачивается так же, как если бы файл был отдан напрямую из origin. Дополнительно оплачивается трафик CDN.

При последующих обращениях к файлу кэширующие серверы будут отдавать его напрямую, минуя обращения к origin-серверу – оплачиваться будет только трафик CDN.

Подробнее рассчитать стоимость облачного хранилища с необходимыми параметрами можно с помощью калькулятора ресурсов.

Тарификация услуги CDN происходит следующим образом: при любом обращении к объекту в облачном хранилище через кэширующий слой происходит проверка наличия этого объекта в кэше. Ключом является имя объекта со всеми query-параметрами, переданными в запросе. Если объект найден, он отдаётся сразу, в биллинге учитывается трафик от edge-серверов CDN до потребителя. Если не найден, выполняется запрос в origin – облачное хранилище Селектел. Объект отдаётся запрашивающему серверу, в биллинге учитывается GET запрос и трафик от облачного хранилища до кэширующего слоя. После этого объект отдаётся потребителю, в биллинге учитывается трафик CDN. 

Тарификация CDN может происходить с задержкой (до недели). Это обусловлено особенностями получения данных о потреблении от партнеров.

Очистка кэша

CDN кэширует данные для того чтобы быстрее их отдавать. Если данные были обновлены, то можно не ждать, пока кэш CDN обновится в течение суток и обновить его самостоятельно.

На вкладке Настройки хранилища в Облачном хранилище можно сбросить кэш CDN для заданных адресов.

Для этого укажите  в блоке CDN в соответствующем поле адреса, которые нужно изъять из кэша и нажмите кнопку Очистить кэш.

image

Среднее время сброса кэша в настоящее время составляет 5-7 секунд. В исключительных ситуациях кэш CDN будет очищен в течение 15 минут.

Сброс кэша CDN Akamai через API

Кэш CDN можно сбросить через консоль, используя команду:

curl -i -X PURGE https://api.selcdn.ru/v1/cdn -H "X-Auth-Token: $token" -d $'https://ххххх.selcdn.com/container1/file1'

Результат будет выглядеть следующим образом:

HTTP/1.1 200 OK
Date: Mon, 16 May 2016 09:45:15 GMT
Content-Length: 268
Content-Type: text/plain; charset=utf-8
{"estimatedSeconds": 5, "progressUri": "/ccu/v2/purges/e4561042-1b4a-11e6-9024-f3cf5304c77a", "purgeId": "e4561042-1b4a-11e6-9024-f3cf5304c77a", "supportId": "17PY1463391915374207-348128448", "httpStatus": 201, "detail": "Request accepted.", "pingAfterSeconds": 300}

Внимание! Очистка кэша CDN осуществляется примерно через 5-7 секунд после выполнения запроса.

Подробнее про API Облачного хранилища.

Сжатие контента

При раздаче контента с использованием CDN сжатие работает для следующих форматов файлов:

  • text/html
  • text/css
  • application-x/javascript
  • application/javascript
  • text/plain
  • text/xml
  • application/xml
  • application/xhtml+xml
  • application/rss+xml
  • image/svg+xml
  • font/ttf
  • application/x-font-ttf
  • application/vnd.ms-fontobject
  • application/font-woff
  • application/font-woff2
  • image/x-icon

Сжатие для других форматов не поддерживается.

При раздаче контента непосредственно из Облачного хранилища без использования CDN сжатие не применяется.

Обратите внимание, что сжатие работает только для объектов размером более 1KB, а для изображений и видео не требуется, так как подобные файлы уже сжаты.

Проверьте Content-Type сжимаемого объекта. Если объект залился с неправильным mime, перезалейте объект с Content-Type.

Пример запроса

curl -i https://******.selcdn.ru/container/file.js -H "X-Auth-Token: **********"

Пример ответа

HTTP/2 200 
accept-language: bytes
access-control-allow-origin: *
access-control-expose-headers: Etag,X-Client,X-Timestamp,X-Trans-Id,Last-Modified,Accept-Ranges,Content-Length,Content-Type
content-length: 86
content-type: application/javascript
etag: 149fd327fe82f243851bb0d3bb82a5ad
last-modified: Tue, 05 Mar 2019 10:55:27 GMT
x-timestamp: 1551783326.99110
x-trans-id: 15890ab6d1f0ae39
date: Tue, 05 Mar 2019 10:55:36 GMT

(function() {
        window._gaq = window._gaq || {
                push: function() {
                        ;
                }
        };
})();

Отключение CDN

Для отключения CDN очистите кэш, переведите контейнеры в приватное состояние, удалите публичные ссылки и отвяжите пользовательские домены.

Примечание: если перед отключением CDN не очистить кэш, трафик CDN будет тарифицироваться еще в течение суток, пока данные не будут удалены из кэша автоматически.