Динамическое ускорение сайтов с помощью Azure CDNDynamic site acceleration via Azure CDN

В связи со стремительным развитием социальных сетей, электронной коммерции и невероятной персонализацией Интернета все большая часть предоставляемого пользователям содержимого создается в режиме реального времени.With the explosion of social media, electronic commerce, and the hyper-personalized web, a rapidly increasing percentage of the content served to end users is generated in real time. Пользователям необходимы быстрые, надежные и настраиваемые решения, которые не зависят от браузера, расположения, устройства или сети.Users expect a fast, reliable, and personalized web experience, independent of their browser, location, device, or network. Однако сами же инновации, при всей привлекательности новых возможностей, замедляют загрузку страниц и создают неудобства в работе пользователя.However, the very innovations that make these experiences so engaging also slow page downloads and put the quality of the consumer experience at risk.

Стандартная поддержка сети доставки содержимого (CDN) позволяет кэшировать файлы ближе к пользователям, что ускоряет доставку статических файлов.Standard content delivery network (CDN) capability includes the ability to cache files closer to end users to speed up delivery of static files. Тем не менее, с развитием динамических веб-приложений кэширование содержимого в граничных расположениях невозможно, так как сервер создает содержимое в ответ на действия пользователей.However, with dynamic web applications, caching that content in edge locations isn't possible because the server generates the content in response to user behavior. Ускорить доставку такого содержимого сложнее, чем в традиционном пограничном кэшировании. Для этого требуется комплексное решение, которое точно настроит каждый элемент на протяжении всего пути данных — с момента их создания до доставки.Speeding up the delivery of such content is more complex than traditional edge caching and requires an end-to-end solution that finely tunes each element along the entire data path from inception to delivery. Оптимизация динамического ускорения сайтов (DSA) в сети CDN Azure значительно улучшает производительность веб-страниц с динамическим содержимым.With Azure CDN dynamic site acceleration (DSA) optimization, the performance of web pages with dynamic content is measurably improved.

Azure CDN от Akamai и от Verizon позволяют выбрать функцию оптимизации DSA в меню Optimized for (Оптимизировано для) во время создания конечной точки.Azure CDN from Akamai and Azure CDN from Verizon both offer DSA optimization through the Optimized for menu during endpoint creation. Динамическое ускорение сайтов корпорации Майкрософт предоставляется через двери службе.Dynamic site acceleration from Microsoft is offered via Azure Front Door Service.

Важно!

Для профилей Azure CDN от Akamai доступна возможность изменения оптимизации конечной точки CDN после ее создания.For Azure CDN from Akamai profiles, you are allowed to change the optimization of a CDN endpoint after it has been created.

Для профилей Azure CDN от Verizon возможность изменения оптимизации конечной точки CDN после ее создания недоступна.For Azure CDN from Verizon profiles, you cannot change the optimization of a CDN endpoint after it has been created.

Настройка конечной точки CDN для ускорения доставки динамических файловCDN endpoint configuration to accelerate delivery of dynamic files

Чтобы настроить конечную точку CDN для оптимизации доставки динамических файлов, можно использовать портал Azure. То же самое можно сделать программным образом с помощью REST API или любого клиентского пакета SDK.To configure a CDN endpoint to optimize delivery of dynamic files, you can either use the Azure portal, the REST APIs, or any of the client SDKs to do the same thing programmatically.

Чтобы настроить конечную точку CDN для оптимизации DSA с помощью портала Azure, сделайте следующее:To configure a CDN endpoint for DSA optimization by using the Azure portal:

  1. На странице Профиль CDN выберите Конечная точка.In the CDN profile page, select Endpoint.

    Добавление конечной точки CDN

    Появится диалоговое окно Добавить конечную точку.The Add an endpoint pane appears.

  2. В разделе Optimized for (Оптимизировано для) выберите Динамическое ускорение сайтов.Under Optimized for, select Dynamic site acceleration.

    Создание конечной точки CDN с поддержкой DSA

  3. В поле Путь пробы введите допустимый путь к файлу.For Probe path, enter a valid path to a file.

    Путь пробы — это функция DSA. Для создания необходим допустимый путь.Probe path is a feature specific to DSA, and a valid path is required for creation. DSA использует небольшой файл пути пробы, размещенный на сервере-источнике, чтобы оптимизировать конфигурации сетевой маршрутизации для CDN.DSA uses a small probe path file placed on the origin server to optimize network routing configurations for the CDN. Вы можете скачать и передать на свой сайт пример файла или использовать в качестве пути пробы имеющийся ресурс на своем сервере-источнике, который имеет размер около 10 КБ.For the probe path file, you can download and upload the sample file to your site, or use an existing asset on your origin that is about 10 KB in size.

  4. Введите другие необходимые параметры конечной точки (дополнительные сведения см. в разделе Создание новой конечной точки сети CDN), а затем нажмите кнопку Добавить.Enter the other required endpoint options (for more information, see Create a new CDN endpoint), then select Add.

    После создания конечной точки CDN оптимизация DSA применяется для всех файлов, соответствующих определенным условиям.After the CDN endpoint is created, it applies the DSA optimizations for all files that match certain criteria.

Чтобы настроить имеющуюся конечную точку для DSA (только для профилей Azure CDN от Akamai), сделайте следующее:To configure an existing endpoint for DSA (Azure CDN from Akamai profiles only):

  1. На странице профиля CDN выберите конечную точку, которую вы хотите изменить.In the CDN profile page, select the endpoint you want to modify.

  2. В левой области выберите Оптимизация.From the left pane, select Optimization.

    Откроется страница оптимизации.The Optimization page appears.

  3. В разделе Optimized for (Оптимизировано для) выберите Динамическое ускорение сайтов, а затем нажмите кнопку Сохранить.Under Optimized for, select Dynamic site acceleration, then select Save.

Примечание

За использование DSA взимается дополнительная плата.DSA incurs extra charges. Дополнительные сведения см. на странице Цены на сеть доставки содержимого.For more information, see Content Delivery Network pricing.

Оптимизация DSA с помощью Azure CDNDSA Optimization using Azure CDN

Динамическое ускорение сайтов в Azure CDN ускоряет доставку динамических ресурсов с помощью следующих приемов:Dynamic Site Acceleration on Azure CDN speeds up delivery of dynamic assets by using the following techniques:

Оптимизация маршрутовRoute Optimization

Оптимизации маршрутов важна, так как Интернет — это динамичная среда, в которой топология сети постоянно меняется под действием трафика и временных простоев.Route optimization is important because the Internet is a dynamic place, where traffic and temporarily outages are constantly changing the network topology. Протокол пограничного шлюза (BGP) — это Интернет-протокол маршрутизации, но при использовании промежуточных серверов точек подключения возможны более быстрые маршруты.The Border Gateway Protocol (BGP) is the routing protocol of the Internet, but there may be faster routes via intermediary Point of Presence (PoP) servers.

Оптимизация маршрутов выбирает самый оптимальный путь к серверу-источнику, чтобы сайт был постоянно доступен, а динамическое содержимое доставлялось пользователям по наиболее быстрому и надежному маршруту.Route optimization chooses the most optimal path to the origin so that a site is continuously accessible and dynamic content is delivered to end users via the fastest and most reliable route possible.

Сеть Akamai использует методы сбора данных в режиме реального времени и сравнения различных путей с помощью разных узлов на сервере Akamai. Она также использует маршрут BGP по умолчанию в открытом Интернете для определения самого быстрого маршрута между сервером-источником и пограничным сервером CDN.The Akamai network uses techniques to collect real-time data and compare various paths through different nodes in the Akamai server, as well as the default BGP route across the open Internet to determine the fastest route between the origin and the CDN edge. Это позволяет избегать длинных маршрутов и точек перегрузки в Интернете.These techniques avoid Internet congestion points and long routes.

Аналогичным образом сети Verizon используют сочетание произвольной рассылки DNS, поддерживающей точки подключения большой емкости и проверку работоспособности для определения самых оптимальных шлюзов для эффективной маршрутизации данных от клиента к источнику.Similarly, the Verizon network uses a combination of Anycast DNS, high capacity support PoPs, and health checks, to determine the best gateways to best route data from the client to the origin.

В результате полностью динамическое и транзакционное содержимое доставляется пользователям быстрее и надежнее, даже когда оно не кэшируется.As a result, fully dynamic and transactional content is delivered more quickly and more reliably to end users, even when it is uncacheable.

Оптимизация TCPTCP Optimizations

Протокол TCP — это стандартный протокол из набора Интернет-протоколов, который используется для обмена данными между приложениями и сетью IP.Transmission Control Protocol (TCP) is the standard of the Internet protocol suite used to deliver information between applications on an IP network. По умолчанию для установки TCP-подключения необходимо выполнить несколько входящих и исходящих запросов. Кроме того, существуют ограничения, которые позволяют избежать перегрузок в сети, снижающих эффективность масштабирования.By default, several back-and-forth requests are required to set up a TCP connection, as well as limits to avoid network congestions, which result in inefficiencies at scale. Azure CDN от Akamai решает эту проблему путем оптимизации в трех областях:Azure CDN from Akamai handles this problem by optimizing in three areas:

Устранение медленного запуска протокола TCPEliminating TCP slow start

Медленный запуск TCP — это алгоритм протокола TCP, который предотвращает перегрузки в сети за счет ограничения объема данных, передаваемых по сети.TCP slow start is an algorithm of the TCP protocol that prevents network congestion by limiting the amount of data sent over the network. При запуске между отправителем и получателем используются окна небольшого размера, чтобы избежать перегрузок. Постепенно размер увеличивается, пока не достигается максимум или не обнаруживается потеря пакетов.It starts off with small congestion window sizes between sender and receiver until the maximum is reached or packet loss is detected.

Профили Azure CDN от Akamai и Azure CDN от Verizon устраняют медленный запуск протокола TCP с помощью следующих трех шагов.Both Azure CDN from Akamai and Azure CDN from Verizon profiles eliminate TCP slow start with the following three steps:

  1. Мониторинг работоспособности и пропускной способности используется для измерения пропускной способности соединений между пограничными серверами точек подключения.Health and bandwidth monitoring is used to measure the bandwidth of connections between edge PoP servers.

  2. Метрики являются общими для пограничных серверов конечных точек, чтобы каждый сервер "знал" о состоянии сети и работоспособности сервера точек подключения.Metrics are shared between edge PoP servers so that each server is aware of the network conditions and server health of the other PoPs around them. 

  3. Пограничные серверы CDN могут делать выводы о некоторых параметрах передачи. Например, какой размер окна будет оптимальным при взаимодействии с соседними пограничными серверами CDN.The CDN edge servers make assumptions about some transmission parameters, such as what the optimal window size should be when communicating with other CDN edge servers in its proximity. Это означает, что начальный размер окна перегрузки можно увеличить, если состояние подключения между пограничными серверами CDN способно передать больше пакетных данных.This step means that the initial congestion window size can be increased if the health of the connection between the CDN edge servers is capable of higher packet data transfers. 

Использование постоянных подключенийLeveraging persistent connections

При использовании CDN к серверу-источнику напрямую подключается меньше уникальных компьютеров, чем когда к нему напрямую подключаются пользователи.Using a CDN, fewer unique machines connect to your origin server directly compared with users connecting directly to your origin. Azure CDN также объединяет запросы пользователей в пулы, чтобы реже подключаться к серверу-источнику.Azure CDN also pools user requests together to establish fewer connections with the origin.

Как упоминалось ранее, чтобы установить TCP-подключения, необходимо выполнить несколько запросов на подтверждение.As previously mentioned, several handshake requests are required to establish a TCP connection. Постоянные подключения, которые реализуются с помощью заголовка HTTP Keep-Alive, повторно используют имеющиеся TCP-подключения для нескольких HTTP-запросов, чтобы сократить время кругового пути и ускорить доставку.Persistent connections, which are implemented by the Keep-Alive HTTP header, reuse existing TCP connections for multiple HTTP requests to save round-trip times and speed up delivery.

Azure CDN от Verizon также периодически отправляет пакеты проверки активности через TCP-соединение, чтобы открытое соединение не было закрыто.Azure CDN from Verizon also sends periodic keep-alive packets over the TCP connection to prevent an open connection from being closed.

Настройка параметров TCP-пакетовTuning TCP packet parameters

Azure CDN от Akamai позволяет настроить параметры, которые управляют подключениями между серверами, и сократить дальность круговых путей, используемых для получения встроенного в сайт содержимого. Для этого необходимо выполнить следующие действия:Azure CDN from Akamai tunes the parameters that govern server-to-server connections and reduces the amount of long-haul round trips required to retrieve content embedded in the site by using the following techniques:

  • Увеличить начальное окно перегрузки, чтобы больше пакетов отправлялось, не ожидая подтверждения.Increasing the initial congestion window so that more packets can be sent without waiting for an acknowledgement.
  • Уменьшить начальное время ожидания повторной передачи, чтобы обнаруживалась потеря и повторная передача выполнялась быстрее.Decreasing the initial retransmit timeout so that a loss is detected, and retransmission occurs more quickly.
  • Уменьшить минимальное и максимальное время ожидания повторной передачи, чтобы быстрее предположить, что пакеты были потеряны при передаче.Decreasing the minimum and maximum retransmit timeout to reduce the wait time before assuming packets were lost in transmission.

Предварительная выборка объектов (только Azure CDN от Akamai)Object prefetch (Azure CDN from Akamai only)

Большинство веб-сайтов состоит из HTML-страницы, которая ссылается на другие ресурсы, такие как изображения и сценарии.Most websites consist of an HTML page, which references various other resources such as images and scripts. Как правило, когда клиент запрашивает веб-страницу, браузер сначала скачивает и анализирует HTML-объект, а затем выполняет дополнительные запросы к связанным ресурсам, необходимым для полной загрузки страницы.Typically, when a client requests a webpage, the browser first downloads and parses the HTML object, and then makes additional requests to linked assets that are required to fully load the page.

Предварительная выборка — это метод извлечения изображений и сценариев, встроенных в HTML-страницу, когда HTML-код передается в браузер. Извлечение происходит еще до того, как браузер запрашивает эти объекты.Prefetch is a technique to retrieve images and scripts embedded in the HTML page while the HTML is served to the browser, and before the browser even makes these object requests.

Если функция предварительной выборки включена, когда CDN передает базовую HTML-страницу в браузер клиента, то CDN проанализирует HTML-файл и выполнит дополнительные запросы на получение связанных ресурсов, а также сохранит их в своем кэше.With the prefetch option turned on at the time when the CDN serves the HTML base page to the client’s browser, the CDN parses the HTML file and make additional requests for any linked resources and store it in its cache. Когда клиент запросит связанные ресурсы, на пограничном сервере CDN уже будут запрашиваемые объекты, и он сможет передать их немедленно, не отправляясь по круговому пути к серверу-источнику.When the client makes the requests for the linked assets, the CDN edge server already has the requested objects and can serve them immediately without a round trip to the origin. Такая оптимизация полезна как для кэшируемого, так и для некэшируемого содержимого.This optimization benefits both cacheable and non-cacheable content.

Адаптивное сжатие изображений (только Azure CDN от Akamai)Adaptive image compression (Azure CDN from Akamai only)

На некоторых устройствах, особенно мобильных, периодически наблюдается снижение скорости сети.Some devices, especially mobile ones, experience slower network speeds from time to time. В таких сценариях пользователю выгоднее быстро просмотреть веб-страницу с небольшими изображениями, чем долго дожидаться загрузки изображений в полном разрешении.In these scenarios, it is more beneficial for the user to receive smaller images in their webpage more quickly rather than waiting a long time for full resolution images.

Эта функция автоматически отслеживает качество сети и задействует стандартные методы сжатия JPEG, чтобы ускорить доставку, когда скорость сети снижается.This feature automatically monitors network quality, and employs standard JPEG compression methods when network speeds are slower to improve delivery time.

Адаптивное сжатие изображенийAdaptive Image Compression Расширения файловFile Extensions
Сжатие JPEGJPEG compression .jpg, .jpeg, .jpe, .jig, .jgig, .jgi.jpg, .jpeg, .jpe, .jig, .jgig, .jgi

CachingCaching

С DSA кэширование по умолчанию отключено в CDN, даже если сервер-источник включает в ответ заголовки Cache-Control или Expires.With DSA, caching is turned off by default on the CDN, even when the origin includes Cache-Control or Expires headers in the response. DSA обычно используется для динамических ресурсов, которые не нужно кэшировать, так как они уникальны для каждого клиента.DSA is typically used for dynamic assets that should not be cached because they are unique to each client. Кэширование может нарушить работу.Caching can break this behavior.

Если на вашем веб-сайте есть статические и динамические ресурсы, для достижения оптимальной производительности лучше всего использовать гибридный подход.If you have a website with a mix of static and dynamic assets, it is best to take a hybrid approach to get the best performance.

Для профилей Azure CDN уровня "Стандартный" от Verizon и Azure CDN уровня "Стандартный" от Akamai можно включить кэширование для определенных конечных точек DSA с помощью правил кэширования.For Azure CDN Standard from Verizon and Azure CDN Standard from Akamai profiles, you can turn on caching for specific DSA endpoints by using caching rules.

Чтобы перейти к правилам кэширования, сделайте следующее.To access caching rules:

  1. На странице Профиль CDN в разделе "Параметры" выберите Правила кэширования.From the CDN profile page, under settings, select Caching rules. 

    Кнопка "Правила кэширования" CDN

    Откроется страница Правила кэширования.The Caching rules page opens.

  2. Создайте глобальное или пользовательское правило кэширования, чтобы включить кэширование для конечной точки DSA.Create a global or custom caching rule to turn on caching for your DSA endpoint.

Только для профилей Azure CDN уровня "Премиум" от Verizon можно включить кэширование для конкретных конечных точек DSA, используя обработчик правил.For Azure CDN Premium from Verizon profiles only, you turn on caching for specific DSA endpoints by using the rules engine. Все созданные правила влияют только на те конечные точки профиля, которые оптимизированы для DSA.Any rules that are created affect only those endpoints of your profile that are optimized for DSA.

Вот как можно перейти к обработчику правил.To access the rules engine:

  1. На странице профиля CDN выберите Управление.From the CDN profile page, select Manage. 

    Кнопка управления для профиля CDN

    Откроется портал управления CDN.The CDN management portal opens.

  2. На портале управления CDN выберите ADN, а затем — Rules Engine (Обработчик правил).From the CDN management portal, select ADN, then select Rules Engine.

    Обработчик правил для DSA

В качестве альтернативы можно также использовать две конечные точки CDN: одну с DSA для доставки динамических ресурсов, а вторую со статической оптимизацией (например, общая веб-доставка) для доставки кэшируемых ресурсов.Alternatively, you can use two CDN endpoints: one endpoint optimized with DSA to deliver dynamic assets and another endpoint optimized with a static optimization type, such as general web delivery, to delivery cacheable assets. Измените URL-адреса веб-страниц для связывания с ресурсами в конечной точке CDN, которую планируется использовать.Modify your webpage URLs to link directly to the asset on the CDN endpoint you plan to use.

Например, mydynamic.azureedge.net/index.html — это динамическая страница, загружаемая из конечной точки DSA.For example: mydynamic.azureedge.net/index.html is a dynamic page and is loaded from the DSA endpoint.  HTML-страница ссылается на несколько статических ресурсов, таких как библиотеки JavaScript и изображения, загружаемые из статической конечной точки CDN, например mystatic.azureedge.net/banner.jpg и mystatic.azureedge.net/scripts.js.  The html page references multiple static assets such as JavaScript libraries or images that are loaded from the static CDN endpoint, such as mystatic.azureedge.net/banner.jpg and mystatic.azureedge.net/scripts.js.