Azure CDN による動的サイトの高速化Dynamic site acceleration via Azure CDN

ソーシャル メディア、電子商取引、高度にパーソナライズされた Web の爆発的な普及に伴って、リアルタイムでエンドユーザーに対して生成されるコンテンツの割合が急増しています。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. ユーザーは、ブラウザー、場所、デバイス、ネットワークに依存しない、高速で信頼性の高いパーソナライズされた Web エクスペリエンスを求めています。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.

標準の Content Delivery Network (CDN) 機能には、エンド ユーザーに近い場所にファイルをキャッシュすることで、静的ファイルの配信を高速化する機能が含まれています。Standard content delivery network (CDN) capability includes the ability to cache files closer to end users to speed up delivery of static files. ただし、動的な Web アプリケーションでは、サーバーがユーザーの行動に応答してコンテンツを生成するため、コンテンツを特定の場所にキャッシュすることはできません。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. Azure CDN の DSA (動的サイトの高速化) 最適化を使用すると、動的コンテンツを含む Web ページのパフォーマンスがある程度まで向上します。With Azure CDN dynamic site acceleration (DSA) optimization, the performance of web pages with dynamic content is measurably improved.

Azure CDN from AkamaiAzure CDN from Verizon では、エンドポイントの作成中に、[最適化の対象] メニューを使用して DSA 最適化を提供します。Azure CDN from Akamai and Azure CDN from Verizon both offer DSA optimization through the Optimized for menu during endpoint creation.

重要

Azure CDN from 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 from 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 Portal を使用するか、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.

Azure Portal を使用して、DSA 最適化を使用するように CDN エンドポイントを構成するには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. [最適化の対象][動的サイトの高速化] を選択します。Under Optimized for, select Dynamic site acceleration.

    DSA を使用する新しい CDN エンドポイントの作成

  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 KB の既存の資産を使用することもできます。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 from 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. [最適化の対象][動的サイトの高速化] を選択し、[保存] をクリックします。Under Optimized for, select Dynamic site acceleration, then select Save.

注意

DSA には追加料金が発生します。DSA incurs extra charges. 詳細については、「Content Delivery Network の価格」をご覧ください。For more information, see Content Delivery Network pricing.

Azure CDN を使用した DSA の最適化DSA 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. インターネットのルーティング プロトコルは Border Gateway Protocol (BGP) ですが、中間のポイント オブ プレゼンス (PoP) サーバーを経由するもっと高速なルートが存在する可能性があります。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 ネットワークは、リアルタイムでデータを収集し、開いているインターネットを経由する既定の BGP ルートだけではなく、Akamai サーバーの異なるノードを経由するさまざまな経路を比較して、配信元と 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 ネットワークでは、Anycast DNS、大容量をサポートする PoP、および正常性チェックを組み合わせて使用して、クライアントから配信元へのデータのルーティングが最良であるゲートウェイを決定します。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.

TCP の最適化TCP 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 from Akamai では、次の 3 つの領域を最適化することで、この問題に対処します。Azure CDN from Akamai handles this problem by optimizing in three areas:

TCP スロー スタートの排除Eliminating 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 from Akamai プロファイルと Azure CDN from Verizon プロファイルでは、次の 3 つの手順で TCP スロー スタートを排除します。Both Azure CDN from Akamai and Azure CDN from Verizon profiles eliminate TCP slow start with the following three steps:

  1. 正常性と帯域幅の監視を使用して、エッジ PoP サーバー間の接続の帯域幅を測定します。Health and bandwidth monitoring is used to measure the bandwidth of connections between edge PoP servers.

  2. メトリックはエッジ PoP サーバー間で共有されるので、各サーバーは、周囲にある他の PoP サーバーのネットワークの状態とサーバーの正常性を認識できます。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. Keep-Alive HTTP ヘッダーによって実装される永続的な接続では、複数の HTTP 要求に既存の TCP 接続を再利用することで、ラウンド トリップ時間を短縮し、配信を高速化します。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 from 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 from 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 from Akamai のみ)Object prefetch (Azure CDN from Akamai only)

ほとんどの Web サイトは、画像やスクリプトなどのさまざまな他のリソースを参照する HTML ページで構成されています。Most websites consist of an HTML page, which references various other resources such as images and scripts. 通常、クライアントが Web ページを要求すると、ブラウザーは、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 ベースのページをクライアントのブラウザーに提供する時点で prefetch オプションが有効になっていると、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 from Akamai のみ)Adaptive image compression (Azure CDN from Akamai only)

一部のデバイス、特にモバイル デバイスでは、ネットワーク速度の低下が発生することがあります。Some devices, especially mobile ones, experience slower network speeds from time to time. これらのシナリオでは、フル解像度の画像が表示されるまで待つよりも、小さな画像が Web ページにすぐに表示されるほうが、ユーザーには有益です。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
JPEG 圧縮JPEG compression .jpg、.jpeg、.jpe、.jig、.jgig、.jgi.jpg, .jpeg, .jpe, .jig, .jgig, .jgi

キャッシュCaching

DSA では、配信元の応答に Cache-Control ヘッダーまたは Expires ヘッダーが含まれている場合でも、CDN のキャッシュが既定で無効になっています。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.

静的資産と動的な資産が混在している Web サイトがある場合は、最高のパフォーマンスを得るために複数の方法を使用することをお勧めします。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 Standard from Verizon プロファイルおよび Azure CDN Standard from 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 Premium from 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] を選択し、[ルール エンジン] を選択します。From the CDN management portal, select ADN, then select Rules Engine.

    DSA のルール エンジン

2 つの CDN エンドポイントを使用することもできます。DSA を使用して最適化された一方のエンドポイントでは動的資産を配信し、静的な最適化 (一般的な Web 配信など) を使用して最適化されたもう一方のエンドポイントではキャッシュ可能な資産を配信します。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. Web ページの 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 ページは、静的な CDN エンドポイント (mystatic.azureedge.net/banner.jpgmystatic.azureedge.net/scripts.js など) から読み込まれる JavaScript ライブラリや画像などの複数の静的資産を参照しています。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.