Как CDN ускоряет доставку динамического контента
Принято считать, что CDN идеально подходит для передачи статики и не очень помогает ускорять динамические приложения.
Сеть доставки контента обеспечивает быструю работу веб-ресурсов главным образом за счёт кеширования. Данные сохраняются на ближайших к юзерам кеш-серверах, и следующие юзеры уже не посылаются к серверу-источнику, а идут на ближайшие точки присутствия.
А динамический контент на сайте уникален для каждого, и его нельзя кешировать. Получается, и ускорить отдачу не получится?
На самом деле, если поддерживаются определённые функции, не будет никаких проблем с любыми страницами. У EdgeCDN есть всё необходимое для этого.
Рассказываем о 8 технологиях, которые помогают нам доставлять динамику так же быстро, как и статику.
1. Отличная связность
Скорость во многом зависит от связности.
Чем больше у CDN-провайдера пиринг-партнёров, тем лучше связность и тем более короткий маршрут от сервера-источника до потребителя может быть построен. А чем короче маршрут, тем раньше завершится загрузка.
У нас тысячи партнёров по пирингу. Мы можем построить лучший маршрут и обеспечить почти мгновенную передачу до юзера.
2. Поддержка HTTP2
Это последняя на настоящий момент версия HTTP. Она была выпущена в 2015 году.
Её использование во многом помогает ускорить отдачу — главным образом за счёт мультиплексирования, то есть отправки нескольких потоков по одному каналу.
Чтобы отправить сообщения, сначала нужно установить TCP-соединение. Для этого требуется «тройное рукопожатие»:
- Отправитель запрашивает установку соединения.
- Получатель в ответ посылает SYN, подтверждает получение с помощью ACK и отправляет номер байта, который должен быть получен следующим.
- Отправитель тоже подтверждает получение и посылает номер следующего ожидаемого байта.
Только после этих трёх шагов соединение считается установленным.
В предыдущих версиях для каждого компонента (JаvaScript, CSS, изображения и другое) открывалось отдельное TCP-соединение. «Тройное рукопожатие» надо было проводить каждый раз, и это делало работу очень медленной.
Во втором стандарте для всего этого устанавливается единое TCP-соединение. При этом разные типы содержимого могут отдаваться параллельно. Это значительно экономит время на загрузку страницы.
Как ещё HTTP2 помогает ускорить сервисы:
- Это бинарный протокол. Использование бинарного формата вместо текстового значительно облегчает выполнение команд. Бинарная природа означает меньшее число ошибок, меньшую загруженность сети и, как следствие, меньшие задержки.
- Умеет сжимать заголовки. Заголовок — это тоже данные. А чем их больше передаётся, тем медленнее они доходят. Вторая версия сжимает заголовки по алгоритму Хаффмана и опускает повторяющиеся.
- Доступна приоритезация запросов. Определённые вещи можно назначить приоритетными — тогда они будут отдаваться в самом начале. В первом приоритете можно отдавать самые важные части страницы, которые должны отобразиться в первую очередь.
- Опция Server Push. Позволяет предугадывать, что понадобится юзеру, и отправлять это ещё до того, как оно было запрошено. Это ускоряет загрузку, снижает количество запросов и облегчает работу источника.
Мы заботимся также и о безопасности. У нас есть опция принудительного редиректа на HTTPS. Включить её можно в панели управления, в настройках ресурса.
Даже если отправка по HTTPS не настроена на сервере-источнике, то вы всё равно можете обеспечить безопасность, воспользовавшись нашими услугами.
Вы можете подключить собственные SSL-сертификаты. А можете получить бесплатный Let’s Encrypt — сертификат у нас.
При этом благодаря использованию HTTP2 и TLS 1.3 безопасное подключение не будет замедлять загрузку страниц. Ваше веб-приложение будет отзывчивым и безопасным.
3. Поддержка WebSocket
WebSocket — это независимый протокол на основе TCP. Он даёт возможность клиенту и серверу общаться в режиме реального времени.
Его принципиальное отличие в том, что нет необходимости каждый раз запрашивать сервер.
Возьмём для примера чат. Чтобы юзер узнал, что ему пришло сообщение, браузер должен периодически узнавать, нет ли новостей.
Минусы такого подхода:
- Увеличивается чосло запросов. Из-за этого растёт загруженность и происходит замедление их обработки.
- Страницы обновляются медленнее. Так как браузер запрашивает сообщения с определённой периодичностью, передать новое он может не сразу. Это создаёт задержки.
WebSocket же устанавливает постоянное соединение. И когда появляется что-то новенькое, это сразу отправится клиенту.
Это сокращает число запросов и ускоряет сайт.
Если вы хотите мгновенно передавать часто меняющиеся сведенья (переписку в чатах, push-уведомления в мобильных приложениях и что-то другое, что постоянно обновляется на сайте), без WebSocket вам не обойтись.
Протокол для передачи можно выбрать в нашей панели управления.
4. Использование IPv6
IPv6 — более современная версия IP. Он был разработан главным образом для того, чтобы решить проблему нехватки IP-адресов. Если в IPv4 для создания адреса применяется 32-битная система, то в новом стандарте — 128-битная.
IPv6-адрес — это восемь 16-битных блоков, разделённых двоеточием. И общее количество IP-адресов, которые можно создать, составляет 2128 — это более 300 млн на каждого жителя планеты. Такого количества должно хватить каждому устройству.
Но, кроме записи IP-адресов, в обновлённый вариант внесли и другие изменения, сделав его более эффективным.
Меньшая нагрузка на сетевое оборудование. Обновлённый стандарт не использует NAT — технологию для преобразования приватных IP-адресов в публичные.
NAT был нужен в IPv4, так как там существовала проблема нехватки адресов. Внутри локальной сети у каждого устройства был приватный IP-адрес, который применялся для локальной связи, например между устройствами внутри одной компании. Но для взаимодействия с другими ресурсами через глобальный интернет нужен был публичный, общедоступный IP.
NAT преобразовывал приватный IP-адрес в публичный — этот процесс называется трансляцией. При этом необходимо было не только преобразовывать адреса, но и хранить информацию об установленных соединениях. Это дополнительно нагружало оборудование, снижало пропускную способность, и в периоды пиковых скачков трафика сайт замедлялся.
В новом стандарте нет необходимости в трансляции, не нужно хранить сведенья о соединениях, следовательно, оборудование нагружено меньше, и скорость остаётся стабильной.
Более простые заголовки пакетов. В обновлённом варианте из них убрали несущественные элементы. Это упростило обработку, снизило нагрузку на маршрутизаторы и в целом сократило объём передаваемой информации.
Более оперативная маршрутизация. Структура IPv6-адреса устроена так, что маршрутизаторы на каждом уровне (крупные провайдеры, подсети и т.д.) обрабатывают не весь адрес, а его часть. Это уменьшает таблицу маршрутизации и сокращает время на обработку.
Определяет чувствительные к задержкам пакеты и передаёт их в первую очередь. Такую возможность даёт QoS (Quality of Service). Это специальная технология, которая умеет определять тип трафика и приоритизировать его на основании этого.
Получается, новый стандарт во многом более эффективен, чем IPv4, обеспечивает более высокую скорость. Однако, чтобы перейти на него, надо серьёзно модернизировать свою инфраструктуру.
Но если вы подключены к EdgeCDN, то в этом нет необходимости. Мы применяем IPv6, даже если ваше оборудование ещё не обновлено него.
5. Сжатие на лету
Размер файла влияет на скорость. Чем меньше он весит, тем раньше будет доставлен. Но и жертвовать важным — не лучшая идея.
Эту проблему решает использование современных технологий сжатия: Gzip, Brotli и WebP.
Gzip предназначен для сжатия текстов. Он находит одинаковые строки и объединяет их. За счёт этого размер уменьшается на 60–70%.
Brotli уменьшает различные файлы. Он берёт уже встроенный в браузеры словарь из более чем 100 000 самых часто встречающихся в интернете элементов. Находит их в передаваемых сообщениях, вычисляет уникальные фрагменты и передаёт только их, а неуникальные добавляет из словаря. Brotli на 20–25% лучше Gzip.
WebP — новый алгоритм для сжатия изображений. Он на 26% лучше PNG сжимает изображения без потерь качества и на 25–34% превосходит JPG при сжатии изображений с потерями.
Но главное преимущество этих технологий в том, что они умеют сжимать на лету, то есть прямо в процессе отправки пользователям.
А если вы подключены к EdgeCDN, вам не придётся ничего настраивать и программировать на своей стороне. Вы загружаете файлы в исходном виде, а их размер будет изменён в момент отдачи пользователям.
6. Гибкие настройки кеширования
Не весь динамический контент нельзя кешировать. Что-то можно сохранять на короткий срок, и оно не потеряет свою актуальность для пользователей.
Особенно важно настроить кеширование точно в соответствии с особенностями вашего веб-ресурса. И мы предоставляем такую возможность.
Вы можете установить любое время кеширования или отключить его совсем.
А ещё у нас доступна очистка кеша — полная или выборочная, для одного файла или для группы. Её можно настроить в панели управления или через API.
7. Функции аутентификации на стороне провайдера
Если вам необходимо предоставлять ограниченный доступ, вы можете перенести аутентификацию на сторону провайдера. Это позволит избавить сервер от перегрузок и ускорит отдачу.
Мы предоставляем опцию Secure Token. Вы создаёте персональные временные ссылки, которые содержат специальный хеш-ключ, и содержимое может быть загружено только по запросам, содержащим этот ключ.
Это защищает от нежелательных загрузок, помогает исключить нелегальные подключения и копирование.
Доступ к ресурсу получают только те, кто имеет на это право. А проверка личности осуществляется на стороне провайдера, что избавляет ваш сервер от лишней нагрузки.
8. Объектное хранилище
Важно обеспечить не только эффективную доставку, но и хранение. Возьмём, например, интернет-магазин. Чтобы отобразить покупателю индивидуальную подборку рекомендуемых товаров, вместе с остальной информацией нужно загрузить и фото товаров. Для их хранения требуются большие объёмы памяти. А при обращении клиента надо моментально извлечь требуемое, сформировать ответ и отдать в соответствующем виде.
Хранение — это большая нагрузка и крупные затраты на вычислительные мощности. Поэтому разумнее будет арендовать облачное объектное хранилище.
В отличие от других типов, в объектных нет иерархии — файлы извлекаются напрямую, за счёт чего сокращается длительность их отгрузки.
Как это относится к CDN? У EdgeЦентр есть объектное хранилище, в которое можно поместить содержимое практически любого объёма, почти моментально извлекать и отправлять их. EdgeStorage имеет отличную производительность и оптимизировано для любых веб-ресурсов. Подключить его можно вместе с нашей сетью и управлять через единую панель.
Подведём итоги
- Есть мнение, что CDN может ускорить доставку только статического контента и плохо работает с динамикой. Но на самом деле, если CDN-провайдер позволяет использовать определённые функции, он отлично справится и с ускорением динамического контента на сайте. EdgeCDN, например, передаёт динамику точно так же быстро, как и статику.
- У нас отличная связность. Это даёт нам возможность построить лучший маршрут и передать данные максимально быстро.
- Мы поддерживаем HTTP2, который намного эффективнее предыдущих версий. Главный его плюс в том, что для отправки любых типов сообщений он устанавливает только одно TCP-соединение.
- Наша сеть поддерживает WebSocket — протокол для передачи данных в реальном времени. Если вы доставляете часто меняющуюся информацию, без него вам не обойтись.
- Ещё мы поддерживаем IPv6, более эффективный, чем IPv4. При этом у нас вы можете использовать его, даже если ваше оборудование ещё его не поддерживает.
- Мы умеем сжимать контент на лету с помощью Brotli, Gzip и WebP.
- У нас гибкие настройки кеширования. А ещё мы заботимся о безопасности и можем взять аутентификацию пользователей на себя, чтобы облегчить работу вашим ресурсам.
- Вместе с CDN вы можете подключить объектное хранилище.
Передавайте динамику быстрее конкурентов с помощью EdgeCDN. Подключите тариф и воспользуйтесь пробным периодом, чтобы убедиться в отличной скорости.
А если не знаете, какой тариф выбрать, воспользуйтесь бесплатной консультацией.