Azure CDN による動的サイトの高速化

ソーシャル メディア、電子商取引、高度にパーソナライズされた Web の爆発的な普及に伴って、リアルタイムでエンドユーザーに対して生成されるコンテンツの割合が急増しています。 ユーザーは、ブラウザー、場所、デバイス、ネットワークに依存しない、高速で信頼性の高いパーソナライズされた Web エクスペリエンスを求めています。 ただし、これらのエクスペリエンスを実現できる新技術は非常に魅力的ですが、ページのダウンロード速度が遅く、コンシューマー エクスペリエンスの質を低下させるリスクがあります。

標準の Content Delivery Network (CDN) 機能には、エンド ユーザーに近い場所にファイルをキャッシュすることで、静的ファイルの配信を高速化する機能が含まれています。 ただし、動的な Web アプリケーションでは、サーバーがユーザーの行動に応答してコンテンツを生成するため、コンテンツを特定の場所にキャッシュすることはできません。 このようなコンテンツの配信速度を向上させることは、従来のエッジ キャッシュよりも複雑であり、その発端から配信までのデータ パス全体で各要素を微調整するエンド ツー エンド ソリューションが必要です。 Azure CDN の DSA (動的サイトの高速化) 最適化を使用すると、動的コンテンツを含む Web ページのパフォーマンスがある程度まで向上します。

Azure CDN from AkamaiAzure CDN from Verizon では、エンドポイントの作成中に、[最適化の対象] メニューを使用して DSA 最適化を提供します。 Microsoft の動的サイト アクセラレーションは、Azure Front Door Service により提供されます。

重要

Azure CDN from Akamai プロファイルでは、CDN エンドポイントの作成後にエンドポイントの最適化を変更できます。

Azure CDN from Verizon プロファイルでは、CDN エンドポイントの作成後にエンドポイントの最適化を変更することはできません。

動的ファイルの配信を高速化する CDN エンドポイントの構成

動的ファイルの配信を最適化するように CDN エンドポイントを構成するには、Azure Portal を使用するか、REST API またはいずれかのクライアント SDK を使用して同じことをプログラムで実行します。

Azure Portal を使用して、DSA 最適化を使用するように CDN エンドポイントを構成するには

  1. [CDN プロファイル] ページで、[エンドポイント] を選択します。

    新しい CDN エンドポイントの追加

    [エンドポイントの追加] ウィンドウが表示されます。

  2. [最適化の対象][動的サイトの高速化] を選択します。

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

  3. [プローブのパス] にファイルの有効なパスを入力します。

    プローブのパスは DSA に固有の機能であり、エンドポイントを作成するには有効なパスが必要です。 DSA では、配信元サーバーに配置された小さな "プローブ パス" ファイルを使用して、CDN のネットワーク ルーティング構成を最適化します。 プローブ パス ファイルについては、サンプル ファイルをダウンロードしてサイトにアップロードすることも、配信元にあるサイズが約 10 KB の既存の資産を使用することもできます。

  4. 必要な他のエンドポイント オプションを入力し (詳細については、「新しい CDN エンドポイントの作成」を参照)、[追加] をクリックします。

    CDN エンドポイントが作成されると、特定の条件に一致するすべてのファイルに DSA 最適化が適用されます。

DSA を使用するように既存のエンドポイントを構成するには (Azure CDN from Akamai プロファイルのみ)

  1. [CDN プロファイル] ページで、変更するエンドポイントを選択します。

  2. 左側のウィンドウで [最適化] を選択します。

    [最適化] ページが表示されます。

  3. [最適化の対象][動的サイトの高速化] を選択し、[保存] をクリックします。

注意

DSA には追加料金が発生します。 詳細については、「Content Delivery Network の価格」をご覧ください。

Azure CDN を使用した DSA の最適化

Azure CDN の動的サイトの高速化では、次の手法を使用して動的資産の配信を高速化します。

ルートの最適化

インターネットは動的な環境であり、トラフィックと一時的な停止によってネットワーク トポロジが常に変化しているため、ルートを最適化することが重要です。 インターネットのルーティング プロトコルは Border Gateway Protocol (BGP) ですが、中間のポイント オブ プレゼンス (PoP) サーバーを経由するもっと高速なルートが存在する可能性があります。

ルートの最適化では、サイトに継続的にアクセスでき、候補の中で最も高速かつ最も信頼性の高いルート経由でエンドユーザーに動的なコンテンツを配信できる、配信元にとって最も最適化された経路が選択されます。

Akamai ネットワークは、リアルタイムでデータを収集し、開いているインターネットを経由する既定の BGP ルートだけではなく、Akamai サーバーの異なるノードを経由するさまざまな経路を比較して、配信元と CDN エッジの間の最も高速なルートを決定するという手法を使用しています。 この手法によって、インターネットの輻輳ポイントと長距離のルートが回避されます。

同様に、Verizon ネットワークでは、Anycast DNS、大容量をサポートする PoP、および正常性チェックを組み合わせて使用して、クライアントから配信元へのデータのルーティングが最良であるゲートウェイを決定します。

その結果、完全に動的なトランザクション コンテンツが、コンテンツをキャッシュできない場合でも、短時間で確実にエンドユーザーに配信されます。

TCP の最適化

伝送制御プロトコル (TCP) は、IP ネットワーク上のアプリケーション間で情報を伝達するために使用される標準的なインターネット プロトコル スイートです。 既定では、TCP 接続を設定するには要求を数回送受信する必要があり、ネットワークの輻輳を回避するための制限もあります。そのため、大きな規模では効率が悪くなります。 Azure CDN from Akamai では、次の 3 つの領域を最適化することで、この問題に対処します。

TCP スロー スタートの排除

TCP スロー スタート は、ネットワーク経由で送信されるデータの量を制限することでネットワークの輻輳を回避する TCP プロトコルのアルゴリズムです。 スロー スタートでは、送信側と受信側の間で小さな輻輳ウィンドウ サイズから始めて、最大サイズに達するかパケットの消失が検出されるまで送信量を増やしていきます。

Azure CDN from Akamai プロファイルと Azure CDN from Verizon プロファイルでは、次の 3 つの手順で TCP スロー スタートを排除します。

  1. 正常性と帯域幅の監視を使用して、エッジ PoP サーバー間の接続の帯域幅を測定します。

  2. メトリックはエッジ PoP サーバー間で共有されるので、各サーバーは、周囲にある他の PoP サーバーのネットワークの状態とサーバーの正常性を認識できます。

  3. CDN エッジ サーバーは、近接する他の CDN エッジ サーバーと通信するときに、最適なウィンドウ サイズなどの一部の伝送パラメーターを推測します。 この手順は、CDN エッジ サーバー間の接続の状態が、高いパケット データ転送に対応できる場合は、最初の輻輳ウィンドウ サイズを大きくできることを意味します。

永続的な接続の活用

CDN では、配信元サーバーに直接接続されるユーザーの数よりも少ない数の一意のコンピューターが配信元に直接接続されます。 また、Azure CDN では、配信元との間に確立する接続の数を減らすために、ユーザーの要求をまとめてプールします。

前述のように、TCP 接続を確立するには、複数のハンドシェイク要求が必要となります。 Keep-Alive HTTP ヘッダーによって実装される永続的な接続では、複数の HTTP 要求に既存の TCP 接続を再利用することで、ラウンド トリップ時間を短縮し、配信を高速化します。

Azure CDN from Verizon では、TCP 接続経由で定期的にキープアライブ パケットを送信して、開いている接続が閉じられるのを防ぎます。

TCP パケットのパラメーターの調整

Azure CDN from Akamai では、サーバー間接続を管理するパラメーターを調整し、次の手法を使用して、サイトに埋め込まれたコンテンツを取得するために必要な長距離のラウンド トリップの発生を減らします。

  • 最初の輻輳ウィンドウを大きくする。これにより、受信確認を待たずにより多くのパケットを送信できます。
  • 最初の再送信タイムアウトを小さくする。これにより、消失の検出と再送信が迅速に行われるようになります。
  • 最小と最大の再送信タイムアウトを小さくする。これにより、転送中にパケットが消失したと推定するまでの待機時間が短縮されます。

オブジェクトのプリフェッチ (Azure CDN from Akamai のみ)

ほとんどの Web サイトは、画像やスクリプトなどのさまざまな他のリソースを参照する HTML ページで構成されています。 通常、クライアントが Web ページを要求すると、ブラウザーは、HTML オブジェクトをダウンロードして解析した後、ページを完全に読み込むために必要な、リンクされた資産に対する追加要求を行います。

"プリフェッチ" は、ブラウザーによる HTML の処理中に、ブラウザーがこれらのオブジェクトを要求する前であっても、HTML ページに埋め込まれている画像やスクリプトを取得する手法です。

CDN が HTML ベースのページをクライアントのブラウザーに提供する時点で prefetch オプションが有効になっていると、CDN は HTML ファイルを解析し、リンクされているリソースに対する追加要求を行って、リソースをキャッシュに格納します。 クライアントがリンクされた資産の要求を行った時点で、要求されたオブジェクトは CDN エッジ サーバーに既に用意されているため、配信元へのラウンド トリップなしですぐに提供できます。 この最適化は、キャッシュできるコンテンツとキャッシュできないコンテンツの両方にメリットがあります。

アダプティブ イメージの圧縮 (Azure CDN from Akamai のみ)

一部のデバイス、特にモバイル デバイスでは、ネットワーク速度の低下が発生することがあります。 これらのシナリオでは、フル解像度の画像が表示されるまで待つよりも、小さな画像が Web ページにすぐに表示されるほうが、ユーザーには有益です。

この機能は、ネットワークの質を自動的に監視し、ネットワークの速度が低下したときに標準的な JPEG 圧縮方法を採用することで配信時間を向上させます。

アダプティブ イメージの圧縮 ファイル拡張子
JPEG 圧縮 .jpg、.jpeg、.jpe、.jig、.jgig、.jgi

キャッシュ

DSA では、配信元の応答に Cache-Control ヘッダーまたは Expires ヘッダーが含まれている場合でも、CDN のキャッシュが既定で無効になっています。 通常、DSA は、各クライアントに固有であるためにキャッシュする必要のない動的資産に使用されます。 キャッシュによって、この動作が壊れる可能性があります。

静的資産と動的な資産が混在している Web サイトがある場合は、最高のパフォーマンスを得るために複数の方法を使用することをお勧めします。

Azure CDN Standard from Verizon プロファイルおよび Azure CDN Standard from Akamai プロファイルでは、キャッシュ規則を使うことによって、特定の DSA エンドポイントのキャッシュを有効にできます。

キャッシュ規則にアクセスするには:

  1. [CDN のプロファイル] ページの設定で、[キャッシュ規則] を選びます。

    CDN の [キャッシュ規則] ボタン

    [キャッシュ規則] ページが開きます。

  2. グローバル キャッシュ規則またはカスタム キャッシュ規則を作成して、DSA エンドポイントのキャッシュを有効にします。

Azure CDN Premium from Verizon プロファイルの場合のみ、ルール エンジンを使って、特定の DSA エンドポイントのキャッシュを有効にすることができます。 作成されたルールは、プロファイルの DSA に最適化されているエンドポイントにのみ影響します。

ルール エンジンにアクセスするには:

  1. [CDN プロファイル] ページで、 [管理] を選択します。

    [CDN プロファイル] の [管理] ボタン

    CDN 管理ポータルが開きます。

  2. CDN 管理ポータルで、[ADN] を選択し、[ルール エンジン] を選択します。

    DSA のルール エンジン

2 つの CDN エンドポイントを使用することもできます。DSA を使用して最適化された一方のエンドポイントでは動的資産を配信し、静的な最適化 (一般的な Web 配信など) を使用して最適化されたもう一方のエンドポイントではキャッシュ可能な資産を配信します。 Web ページの URL を変更して、使用する予定の CDN エンドポイントの資産に直接リンクします。

例: mydynamic.azureedge.net/index.html は動的ページであり、DSA エンドポイントから読み込まれます。 この html ページは、静的な CDN エンドポイント (mystatic.azureedge.net/banner.jpgmystatic.azureedge.net/scripts.js など) から読み込まれる JavaScript ライブラリや画像などの複数の静的資産を参照しています。