すべてのプロダクト
Search
ドキュメントセンター

Edge Security Acceleration:ESA エッジ関数を使用したウェブサイトレンダリングの高速化

最終更新日:Dec 04, 2025

このチュートリアルでは、Edge Security Acceleration (ESA) の Functions and Pages を使用して動的コンテンツと静的コンテンツを分離し、シンプルな eコマースウェブサイトを高速化する方法を説明します。デプロイと設定のウォークスルーを提供し、Functions and Pages の仕組みと、ウェブサイトの読み込み速度とユーザーエクスペリエンスを大幅に向上させる方法について解説します。

ワークフロー

Web サイトの静的コンテンツと動的コンテンツを個別に高速化するには、次のステップに従います。

  1. Web サイトの構成: プライマリドメイン名を ESA に追加します。

  2. 静的リソースのデプロイ: イメージリソースを Object Storage Service (OSS) に保存します。次に、これらのイメージにアクセスするために ESA でドメイン名を設定します。

  3. 動的リソースのデプロイ: Elastic Compute Service (ECS) サーバーに Python サービスをデプロイします。次に、動的リクエストを高速化するために ESA でドメイン名を設定します。

  4. エッジ関数の構成: エッジ関数を構成し、それにドメイン名を割り当てます。これにより、高速なページレンダリング応答が提供されます。

開始する前に

このチュートリアルでは、オリジンサーバーとして www.example.com、高速化ドメイン名として shopping.example.com、静的リソースのドメインとして images.example.com を使用します。 これらを実際のドメイン名に置き換えてください。 概念実証 (POC) のために、ファイル資料のイメージと Python スクリプトを使用できます。

1. Web サイトの構成

静的リソースと動的リソースを高速化するために、Web サイトを ESA に追加します。

  1. ESA コンソールで、サイト管理 を選択し、サイトを追加 をクリックします。

  2. Web サイト (例: example.com) を入力し、[次へ] をクリックします。

  3. エリアと接続方式の選択 ページで、[Location For Acceleration And Protection] セクションの リージョンを選択 し、接続方式[CNAME] を選択して、次へ をクリックします。

  4. プランの選択 ページで、新規プラン を購入するか、購入済みプラン を選択します。画面の指示に従って購入を完了します。

    新しいプランの購入

    新規プラン ページで、ニーズに合ったプランを選択します

    image

    既存のプランのバインド

    既存のプランがある場合は、購入済みプラン タブで選択します。

    image

  5. ESA コンソール で、左側のナビゲーションウィンドウで [Websites] をクリックし、ターゲット Web サイトをクリックします。[概要] ページで、ドメイン名の所有権を確認します。

    1. TXT レコードの [レコード値] をコピーします。

      image

    2. Alibaba Cloud DNS コンソール で、左側のナビゲーションウィンドウで [パブリックゾーン] を選択します。[パブリックゾーン] タブで、ターゲット Web サイトのドメイン名を見つけて [設定] をクリックします。

    3. [設定] セクションで、[レコードの追加] をクリックします。次の設定でレコードを追加し、[OK] をクリックします。

      構成

      値の例

      レコードタイプ

      TXT

      ホスト名

      _esaauth

      レコード値

      verify_a186***be8 (コンソールで提供されるレコード値)

      TTL

      10 分

    4. ESA コンソール で、ターゲット Web サイトの概要ページに移動し、認証 をクリックします。

    5. 検証成功: ESA に 検証成功 と表示された場合、検証は完了です。

      検証失敗: ESA に 検証失敗 と表示された場合は、前のステップが正しく実行されたかどうかを確認し、設定を調整して、もう一度 認証 をクリックします。

2. 静的リソースの設定

2.1 環境の準備

  1. OSS コンソール にログインします。[バケット] ページに移動し、[バケットの作成] をクリックします。[バケット名] を入力します。他のパラメーターはデフォルト設定のままにして、[作成] をクリックします。

    image

  2. 作成したバケットを選択します。ファイルリストページで、必要なファイルをアップロードします。「ファイル資料」セクションからイメージセットを解凍し、イメージをバケットのルートディレクトリにアップロードします。

    image

    説明

    イメージリソースは OSS バケットのルートディレクトリに保存することをお勧めします。

2.2 静的リソースのドメイン名の構成

  1. ESA コンソールで、サイト管理 を選択します。サイト 列で、ターゲットサイトをクリックします。

  2. 左側のナビゲーションウィンドウで、DNS > レコード > レコードの追加 を選択します。DNS レコードを追加します。次の表に設定例を示します。

    構成

    値の例

    レコードタイプ

    CNAME

    ホスト名

    images

    プロキシのステータス

    プロキシ済み

    レコード値

    OSS

    アクセスタイプ

    プライベートアクセス (同じアカウント)

    承認

    デフォルトでは、同じアカウントのプライベートアクセスは自動的に承認されます。

    OSS バケット

    website-resources-shopping.*******.aliyuncs.com

    オリジンホスト

    オリジンのドメイン名に一致

    TTL

    自動

  3. レコードタイプには [イメージ/ビデオ] を選択し、[完了] をクリックします。

  4. DNS レコードが作成されたら、CNAME 構成ガイドページから [ホスト名][レコード値] をコピーします。

    image

  5. Alibaba Cloud DNS コンソールに移動します。左側のナビゲーションウィンドウで、[パブリックゾーン] を選択します。ターゲット Web サイトのドメイン名を見つけて、[設定] をクリックします。

  6. [設定] セクションで、[レコードの追加] をクリックします。次の設定でレコードを追加し、[OK] をクリックします。

    構成

    値の例

    レコードタイプ

    CNAME

    ホスト名

    images

    レコード値

    images.example.com.**.*******.com

    TTL

    10 分

  7. ステップ 4 の CNAME 構成ガイドページに戻ります。[CNAME 検証] ステップで、[クエリ] をクリックします。ステータスが [有効] の場合、CNAME レコードは正常に構成されています。

    image

    説明

    CNAME レコードが有効になるまで数分かかる場合があります。

  8. ブラウザに http://{高速化ドメイン名}/1.png と入力して、イメージが表示されるかどうかをテストします。

    説明

    404 エラーが発生した場合は、ディレクトリパスに基づいてファイルにアクセスするように URL を変更してみてください。たとえば、イメージがルートディレクトリではなく images ディレクトリにある場合は、http://{高速化ドメイン名}/images/1.png にアクセスします。

3. 動的リソースのデプロイ

3.1 環境の準備

  1. ECS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。トップメニューバーで、インスタンスが配置されているリージョンを選択します。この例では、[中国 (杭州)] です。

  3. [インスタンス] ページで、[インスタンスの作成] をクリックします。次に、次の例を参照して ECS インスタンスを作成します。

構成

値の例

課金方法

従量課金

リージョン

中国 (杭州)

ネットワークとゾーン

デフォルト VPC、ゾーン内のデフォルト vSwitch

インスタンス

ecs.e-c1m1.large (2 vCPU 2 GiB)

イメージ

[パブリックイメージ] で、[Alibaba Cloud Linux] を選択します

イメージバージョン

Alibaba Cloud Linux 3.2104 LTS 64 ビット

システムディスクタイプ

ESSD

システムディスクサイズ

40 GiB

パブリック IP アドレス

[パブリック IPv4 アドレスの割り当て] を選択します

帯域幅課金方法

トラフィック単位課金

帯域幅

5 Mbps

セキュリティグループ

[セキュリティグループの作成] ([IPv4 ポート/プロトコルの有効化] で、HTTP(TCP:80) を選択)

管理設定

[カスタムパスワード] (独自のパスワードを設定)

3.2 動的リソースのデプロイ

  1. ECS コンソール にログインします。

  2. 左側のナビゲーションウィンドウで、[インスタンスとイメージ] > [インスタンス] を選択します。トップメニューバーで、[中国 (杭州)] リージョンを選択します。

  3. [インスタンス] ページで、ターゲットインスタンスを見つけ、インスタンス ID をクリックしてインスタンス詳細ページに移動します。

  4. [リモート接続] をクリックします。[接続] を選択し、[今すぐサインイン] をクリックします。ログインパスワードを入力してインスタンスにログインします。

    image

  5. ファイル資料」からデモの python スクリプトと製品データをダウンロードします。パッケージを解凍した後、2 つのファイルを ECS サーバーにアップロードします。

  6. セクション 2.2 で構成した静的リソースの高速化ドメイン名で、ItemInfo.json 内のドメイン名 images.example.com を置き換えます。

    次に、左上隅で [ファイル] > [新しいファイルマネージャーウィンドウ] > [ファイルのアップロード] を選択します。ダウンロードした 2 つのドキュメントをサーバーにアップロードします。

    image

  7. [Workbench] コンソールで、次のコマンドを入力して HTTP サーバーを起動します。

    cd /  # ルートディレクトリに移動します。
    nohup python -m http.server 80 &  # バックグラウンドでポート 80 の HTTP サービスを開始します。
  8. ブラウザに http://<パブリック IP>/ItemsInfo.json と入力して、動的な製品情報が正しく返されるかどうかを確認します。

3.3 動的リソースのドメイン名の構成

  1. ESA コンソールで、サイト管理 を選択します。ターゲットサイトの 操作 列で、image アイコンをクリックし、DNS レコード設定 を選択します。

  2. 左側のナビゲーションウィンドウで、DNS > レコード を選択します。

  3. レコードリストページで、[レコードの追加] をクリックします。次の表の説明に従ってパラメーターを構成し、[次へ] をクリックします。

    構成

    値の例

    レコードタイプ

    A/AAAA

    ホスト名

    www

    プロキシステータス

    プロキシ済み

    レコード値

    10.0.x.x (ターゲット ECS インスタンスのパブリック IP アドレス)

    TTL

    自動

  4. レコードタイプには [API] を選択し、[完了] をクリックします。

  5. DNS レコードが作成されたら、[CNAME 構成ガイド] をクリックします。[ホスト名][レコード値] をコピーします。

    説明

    現在のページを閉じないでください。ステップ 8 でこのページに戻り、CNAME レコードが有効になったかどうかを確認する必要があります。

    image

  6. Alibaba Cloud DNS コンソールに移動します。左側のナビゲーションウィンドウで、[パブリックゾーン] を選択します。ターゲットサイトのドメイン名を見つけて、[設定] をクリックします。

  7. [設定] セクションで、[レコードの追加] をクリックします。次の設定でレコードを追加し、[OK] をクリックします。

    構成

    値の例

    レコードタイプ

    CNAME

    ホスト名

    www

    レコード値

    www.example.com.**.*******.com ([CNAME 構成ウィザード][レコード値])

    TTL

    10 分

  8. ステップ 5 の [CNAME 構成ウィザード] ページに戻ります。[CNAME 検証] ステップで、[クエリ] をクリックします。[有効] と表示された場合、CNAME レコードは正常に構成されています。

    image

    説明

    CNAME レコードが有効になるまで数分かかる場合があります。

4. エッジ関数の構成

4.1 エッジ関数の作成

  1. ESA コンソール にログインします。左側のナビゲーションウィンドウで、エッジコンピューティング > Functions and Pages を選択します。

  2. [作成] をクリックします。[関数テンプレート] から Hello World を選択し、[次へ] をクリックします。

  3. [関数名] を入力します。説明を追加し、[送信] をクリックします。

  4. エッジ関数のエンドポイントを追加します。

    1. 左側のナビゲーションウィンドウで、[エッジコンピューティング] > Functions and Pages を選択します。エッジ関数リストページで、ターゲット関数をクリックします。

    2. 関数詳細ページで、[ドメイン] タブに切り替え、ドメイン名を追加 をクリックします。エンドポイント shopping.example.com を関数に割り当て、[OK] をクリックします。

    3. ドメイン名バインディングエリアで、作成したエッジ関数ドメイン名を見つけます。操作 列で、DNS レコードの表示 をクリックします。エッジ関数ドメイン名の CNAME 値をコピーします。

      image

    4. Alibaba Cloud DNS コンソール にログインします。左側のナビゲーションウィンドウで、[パブリックゾーン] を選択します。ターゲット Web サイトのドメイン名を見つけて、[設定] をクリックします。

    5. [設定] セクションで、[レコードの追加] をクリックします。次の設定でレコードを追加し、[OK] をクリックします。

      構成

      説明

      値の例

      レコードタイプ

      ドメイン名が指すタイプを選択します。

      CNAME

      ホスト名

      ドメイン名のプレフィックスに基づいてホストレコードを入力します。

      shopping

      レコード値

      エッジ関数ドメイン名に対応する CNAME 値を入力します。

      shopping.example.com.**.*******.com

      TTL

      ドメイン名の更新期間です。デフォルト値のままにします。

      10 分

    6. DNS レコードページを更新し、エッジ関数ドメイン名の [CNAME ステータス][構成予定] から [構成済み] に変更されたかどうかを確認します。

      説明

      CNAME レコードが有効になるまで数分かかる場合があります。すぐに有効にならない場合は、数分待ってください。

4.2 エッジ証明書の構成

ESA は HTTPS 暗号化をサポートしています。ESA で SSL 証明書を構成し、SSL/TLS を有効にして、クライアントと ESA POP 間のデータ伝送を暗号化できます。このソリューションでは、無料の証明書をリクエストすることをお勧めします。詳細については、エッジ証明書を構成する方法」をご参照ください。

  1. ESA コンソール で、左側の [サイト管理] をクリックします。サイト管理ページで、ターゲットサイトをクリックします。

  2. ターゲットサイト管理ページで、左側のナビゲーションウィンドウで [SSL/TLS] > [エッジ証明書] を選択します。

  3. [エッジ証明書] セクションで、[SSL/TLS を有効にする] を見つけ、右側のスイッチをクリックしてこの機能を有効にします。

    image

  4. [エッジ証明書] セクションで、[証明書管理] を見つけ、[無料証明書のリクエスト] をクリックします。次の表の説明に従ってパラメーターを構成し、[OK] をクリックします。

    構成

    説明

    値の例

    認証局

    デフォルト値のままにします。

    Let's Encrypt

    証明書ドメイン名

    前のステップの静的リソースドメイン名、動的リソースドメイン名、およびエッジ関数ドメイン名を入力します。

    images.example.com

    www.example.com

    shopping.example.com

  5. 無料証明書の申請には約 5〜10 分かかります。証明書が発行されると、自動的に ESA プラットフォームにデプロイされます。

4.3 オリジンプロトコルとポートの構成

SSL 証明書が構成されると、ESA はデフォルトでオリジンフェッチにクライアントリクエスト (HTTPS) と同じプロトコルを使用します。ただし、このデモのオリジンサーバーは HTTPS をサポートしていないため、オリジンサーバーへの HTTPS リクエストは失敗します。したがって、ESA でオリジンプロトコルとして HTTP を指定する必要があります。

  1. ESA コンソール で、左側の [Web サイト] をクリックし、ターゲットサイトをクリックします。

  2. [Web サイト] ページで、左側のナビゲーションウィンドウで [SSL/TLS] > [オリジン証明書] を選択します。

  3. [オリジン証明書] セクションで、[オリジンプロトコルとポート] を見つけ、[構成] をクリックします。次の表の説明に従ってパラメーターを構成し、[OK] をクリックします。

    構成

    説明

    値の例

    オリジンプロトコル

    オリジンサーバーは HTTPS をサポートしていないため、HTTP を選択します。

    HTTP

    HTTP ポート

    デフォルト値の 80 のままにします。

    80

    image

4.4 エッジ関数のテストと公開

  1. ESA コンソール にログインし、左側のナビゲーションウィンドウで エッジコンピューティング > Functions and Pages を選択します。

  2. エッジ関数リストページで、ターゲット関数を選択します。

  3. エッジ関数詳細ページで、[コード] タブに切り替えます。次の JavaScript コードを使用し、urlPrefix 変数をオリジンドメイン名 www.example.com に置き換えます。次に、[保存] をクリックします。

    async function handleRequest(request) {
        const urlPrefix = 'www.example.com';
        // HTML ファイルのリクエスト URL
        const staticDataUrl = 'http://' + urlPrefix + '/index.html';
        // 動的データのリクエスト URL
        const dynamicDataUrl = 'http://' + urlPrefix + '/ItemsInfo.json';
    
        // Cache API を使用してページスケルトンデータをクエリします
        const htmlCache = await cache.get(staticDataUrl);
        let html = '';
        if (htmlCache === undefined) {
            const htmlResponse = await fetch(staticDataUrl);
            html = await htmlResponse.text();
            await cache.put(staticDataUrl, new Response(html, { headers: [["cache-control", "max-age=1000"]] }));
        } else {
            html = await htmlCache.text();
        }
    
        // オリジンサーバーから製品データをフェッチします
        const jsonResponse = await fetch(dynamicDataUrl);
        const json = await jsonResponse.json();
    
        // 動的データを div ブロックにカプセル化します
        let itemsHtml = '';
        for (const item of json.data) {
            const itemHtml = `
                <div class="bg-white overflow-hidden shadow rounded-lg">
                            <div class="p-4">
                                <img class="h-48 w-full object-cover" src="${item.image}" alt="Placeholder image of a product">
                                <h3 class="mt-2 text-gray-900 text-sm font-medium">${item.title}</h3>
                                <div class="mt-4">
                                    ${item.originalPrice}${item.discountPrice}
  4. コードエディターで、右上の [リクエスト] をクリックしてローカルテストを実行します。ログはエディターの左下に表示されます。

  5. ローカルテストが成功したら、[ワンクリックリリース] をクリックしてコードを本番環境にデプロイします。

5. リソースの確認とクリーンアップ

5.1 デモの確認

  1. エッジ関数を公開した後、次の方法で結果を確認します。

    • ブラウザを開き、セクション 4.1 で作成したエッジ関数ドメイン名 (https://<エッジ関数ドメイン名>) にアクセスします。

    • ページが正しく読み込まれ、製品情報が動的にレンダリングされるかどうかを確認します。

    • ブラウザの開発者ツールを使用してネットワークリクエストを表示します。静的リソースがキャッシュヒットになり、動的データが POP を介して高速化されることを確認します。

image

image

5.2 (オプション) リソースのクリーンアップ

このデモでは、複数のリソースインスタンスを作成します。これらのリソースが不要になった場合は、課金を避けるためにそれらをリリースします。

  1. ESA から Web サイトを削除します。

    ESA コンソール にログインします。左側のナビゲーションウィンドウで、[Websites] をクリックします。削除したい Web サイトを見つけ、[アクション] 列の [削除] をクリックします。

  2. エッジ関数を削除します。

    ESA コンソール で、左側のナビゲーションウィンドウで [エッジコンピューティング] > [関数とページ] を選択します。削除したい関数をクリックし、[基本情報] タブの [削除] をクリックします。

  3. ECS インスタンスをリリースします。

    ECS コンソール にログインします。[インスタンス] ページで、ターゲットインスタンスを見つけます。[アクション] 列で、[リリース] を選択します。プロンプトに従ってインスタンスをリリースします。

  4. セキュリティグループを削除します。

    ECS コンソール にログインします。[セキュリティグループ] ページで、ターゲットセキュリティグループを見つけます。[アクション] 列で、[削除] をクリックします。プロンプトに従ってセキュリティグループを削除します。

ファイル資料

製品イメージセット.zip

Web サイトコードと製品データ.zip