Использование CDN для ускорения доставки статического контента

Вступление

Современные веб-сайты и приложения часто должны доставлять значительное количество статического контента конечным пользователям. Этот контент включает в себя изображения, таблицы стилей, JavaScript и видео. По мере того, как количество и размер этих статических ресурсов увеличиваются, увеличивается использование полосы пропускания и увеличивается время загрузки страниц, что ухудшает возможности просмотра для ваших пользователей и уменьшает доступную емкость ваших серверов.

Чтобы значительно сократить время загрузки страницы, повысить производительность и сократить полосу пропускания и затраты на инфраструктуру, вы можете внедрить CDN или c ontent d elivery n etwork, чтобы кэшировать эти ресурсы по всей набор географически распределенных серверов.

В этом руководстве мы предоставим общий обзор CDN и их работы, а также преимущества, которые они могут предоставить для ваших веб-приложений.

Что такое CDN?

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

изображение: http: //assets.digitalocean.com/articles/CDN/without-CDN.png [Схема доставки контента без CDN]

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

изображение: http: //assets.digitalocean.com/articles/CDN/CDN.png [Схема сети доставки контента (CDN)]

Это позволяет географически распределенным пользователям минимизировать количество прыжков, необходимых для получения статического содержимого, извлекая содержимое непосредственно из кэша соседнего края. В результате значительно уменьшаются задержки и потери пакетов, сокращается время загрузки страниц и резко снижается нагрузка на исходную инфраструктуру.

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

Как работает CDN?

Когда пользователь посещает ваш сайт, он сначала получает ответ от DNS-сервера, содержащий IP-адрес вашего веб-сервера. Затем их браузер запрашивает контент веб-страницы, который часто состоит из множества статических файлов, таких как HTML-страницы, таблицы стилей CSS, код JavaScript и изображения.

После развертывания CDN и выгрузки этих статических ресурсов на серверы CDN, либо «выталкивая» их вручную, либо заставляя CDN «вытягивать» активы автоматически (оба механизма описаны в https://www.digitalocean.com/ community / tutorials / using-a-cdn-to-speed-up-static-content-delivery # push-vs-pull-zone [следующий раздел]), затем вы даете указание своему веб-серверу переписать ссылки на статический контент таким образом, чтобы они ссылки теперь указывают на файлы, размещенные на CDN. Если вы используете CMS, например WordPress, переписывание ссылок может быть реализовано с помощью стороннего плагина, например CDN Enabler.

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

Механизмы кэширования различаются у разных поставщиков CDN, но обычно они работают следующим образом:

  1. Когда CDN получает первый запрос на статический актив, такой как изображение PNG, он не имеет кэшированного актива и должен извлечь копию актива либо с соседнего пограничного сервера CDN, либо с самого исходного сервера. Это известно как «пропуск» кэша и обычно может быть обнаружен путем проверки заголовка ответа HTTP, содержащего «+ X-Cache: MISS +». Этот начальный запрос будет медленнее, чем будущие запросы, потому что после выполнения этого запроса ресурс будет кэширован на границе.

  2. Будущие запросы на этот ресурс («попадания» в кеш), направляемые в это крайнее местоположение, теперь будут обслуживаться из кеша до истечения срока действия (обычно устанавливаемого через заголовки HTTP). Эти ответы будут значительно быстрее, чем первоначальный запрос, что значительно сократит задержки пользователей и разгрузит веб-трафик в сеть CDN. Вы можете проверить, что ответ был получен из кэша CDN, проверив заголовок ответа HTTP, который теперь должен содержать + X-Cache: HIT +.

Чтобы узнать больше о том, как работает и реализован определенный CDN, обратитесь к документации вашего поставщика CDN.

В следующем разделе мы представим два популярных типа CDN: * push * и * pull * CDN.

Пуш против Тяговые зоны

Большинство провайдеров CDN предлагают два способа кэширования данных: зоны извлечения и зоны рассылки.

  • Извлечение зон * включает в себя ввод адреса вашего исходного сервера и предоставление возможности CDN автоматически извлекать и кэшировать все статические ресурсы, доступные на вашем сайте. Зоны извлечения обычно используются для доставки часто обновляемых веб-ресурсов малого и среднего размера, таких как файлы HTML, CSS и JavaScript. После предоставления CDN адреса вашего исходного сервера следующим шагом обычно является перезапись ссылок на статические ресурсы, чтобы они теперь указывали на URL-адрес, предоставленный CDN. С этого момента CDN будет обрабатывать входящие запросы пользователей на ваши ресурсы и обслуживать контент из своих географически распределенных кешей и вашего источника в зависимости от ситуации.

Чтобы использовать * Push Zone *, вы загружаете свои данные в назначенное место или место хранения, которое CDN затем помещает в кеши на своем распределенном флоте пограничных серверов. Push-зоны обычно используются для больших, редко меняющихся файлов, таких как архивы, пакеты программного обеспечения, PDF-файлы, видео и аудио файлы.

Преимущества использования CDN

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

Мы рассмотрим эти и некоторые другие важные преимущества, которые дает использование CDN ниже.

Происхождение разгрузки

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

Низкая задержка для улучшения взаимодействия с пользователем

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

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

Управляйте шипами трафика и избегайте простоев

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

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

Снизить расходы

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

Повысить безопасность

Другим распространенным вариантом использования CDN является смягчение атаки DDoS. Многие поставщики CDN включают функции для мониторинга и фильтрации запросов к пограничным серверам. Эти сервисы анализируют веб-трафик на наличие подозрительных паттернов, блокируя трафик злонамеренных атак и продолжая пропускать авторитетный пользовательский трафик. Поставщики CDN обычно предлагают различные услуги по смягчению последствий DDoS, от общей защиты от атак на уровне инфраструктуры (OSI уровни 3 и 4), до более современные услуги по смягчению последствий и ограничение скорости.

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

Выбор лучшего решения

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

Перед развертыванием CDN дополнительные шаги по оптимизации, такие как минимизация и сжатие файлов JavaScript и CSS и включение сжатия HTTP-запросов веб-сервера, также могут оказать существенное влияние на время загрузки страницы и использование полосы пропускания.

Полезный инструмент для измерения скорости загрузки вашей страницы и ее улучшения - PageSpeed ​​Insights от Google. Еще один полезный инструмент, который обеспечивает разбивку запросов и ответов, а также предлагает оптимизацию, - Pingdom.

Заключение

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

Благодаря плагинам и поддержке сторонних производителей для основных сред, таких как WordPress, Drupal, Django и Ruby on Rails, а также дополнительным функциям, таким как защита от DDoS, полный SSL, мониторинг пользователей и сжатие ресурсов, CDN могут стать эффективным инструментом для обеспечения безопасности и оптимизация сайтов с большим трафиком.

Related