Fastly キャッシングがクラウドインフラストラクチャのAdobe Commerceで機能しない

この記事では、サイトで Fastly キャッシュが機能しない問題の修正について説明します。 Fastly は、クラウドインフラストラクチャーのプランと実装に関するAdobe Commerceに含まれる CDN およびキャッシュサービスです。 Fastly 拡張機能が機能していることを確認したり、Fastly 拡張機能をデバッグしたりするには、curl コマンドを使用して特定の応答ヘッダーを表示します。 これらの応答ヘッダーの値は、Fastly が有効になっており、正しく機能しているかどうかを示します。 ヘッダーとキャッシュ動作の値に基づいて、問題をさらに調査できます。

この情報は、ライブサイトおよびオリジンサーバーの Fastly ヘッダーを検証およびテストするのに役立ちます。

説明 description

環境

  • 製品:クラウドインフラストラクチャー上のAdobe Commerce
  • バージョン:Fastly 1.2.27 以降

問題/症状

ライブサイト、実稼働、またはステージング環境では、キャッシュが機能していない可能性があります。

原因

通常、Fastly のキャッシュが機能しない場合は、設定、資格情報が正しくない、サポートされていないAdobe Commerce拡張機能が問題になります。 Fastly を誤って設定した場合、またはサポートされていない拡張機能を使用してヘッダーを削除した場合、Fastly のキャッシュは機能しません。


コマンドによるテストと応答ヘッダーの確認

dig コマンドを使用したテスト

まず、URL に対して dig コマンドを使用してヘッダーを確認します。 ターミナルアプリケーションで、dig <url> と入力し、Fastly サービスがヘッダーに表示されることを確認します。 その他の dig テストについては、Fastly の DNS 変更前のテスト ​ を参照してください。

例:

  • ライブサイト:dig http[ s] ://<your domain>
  • ステージング:dig http[ s] ://staging.<your domain>.c.<instanceid>.ent.magento.cloud
  • 実稼動:dig http[ s] ://<your domain>.{1|2|3}.<project ID>.ent.magento.cloud

curl コマンドによるテスト

次に、curl コマンドを使用して、X-Magento-Tags が存在することと、追加のヘッダー情報を確認します。 コマンドの形式は、ステージングと実稼動で異なります。

これらのコマンドについて詳しくは、-H "host:URL" を挿入する際に Fastly をバイパスし、接続場所(OneDrive スプレッドシートからの CNAME 情報)の元に置き換え、-k は SSL を無視し、詳細な応答を提供 -v ます。 ヘッダーが正しく表示される場合は、ライブサイトを確認して、ヘッダーを再度確認します。

  • Fastly をバイパスしてオリジンサーバーに直接アクセスする際にヘッダーの問題が発生した場合は、コード、拡張機能、インフラストラクチャに問題がある可能性があります。
  • オリジンサーバーに直接エラーが発生していないが、Fastly を通じてライブドメインにヘッダーが届いていない場合は、Fastly エラーが発生している可能性があります。

最初に、ライブサイトを確認して、応答ヘッダーを検証します。 コマンドは、応答を受信するために Fastly 拡張機能を経由します。 正しいヘッダーが届かない場合は、オリジンサーバーを直接テストする必要があります。 このコマンドは、Fastly-Magento-VCL-Uploaded ヘッダーと X-Cache ヘッダーの値を返します。

  1. ターミナルで、次のコマンドを入力してライブサイト URL をテストします。curl http://<live URL> -vo /dev/null -HFastly-Debug:1 [ --resolve]

    ライブ URL が DNS で設定されておらず、静的ルートも設定されていない場合にのみ、--resolve を使用します。 例:curl http://www.mymagento.biz -vo /dev/null -HFastly-Debug:1

  2. 応答ヘッダーを検証し、Fastly が機能していることを確認します。 このコマンドの出力は、curl のステージングおよび実稼動環境と似ています。 例えば、次のコマンドを実行すると、返される一意のヘッダーが表示されます。< Fastly-Magento-VCL-Uploaded: yes < X-Cache: HIT, MISS

ステージングをテストするには:

curl http[ s] ://staging.<your domain>.c.<instanceid>.ent.magento.cloud -H "host: <url>" -k -vo /dev/null -HFastly-Debug:1

実稼動用ロードバランサーをテストするには、次の手順に従います。

curl http[ s] ://<your domain>.c.<project ID>.ent.magento.cloud -H "host: <url>" -k -vo /dev/null -HFastly-Debug:1

実稼動オリジンノードをテストするには:

curl http[ s] ://<your domain>.{1|2|3}.<project ID>.ent.magento.cloud -H "host: <url>" -k -vo /dev/null -HFastly-Debug:1

直接オリジンノード:

curl http[ s] ://<your domain>.{1|2|3}.<project ID>.ent.magento.cloud -H "host: <url>" -k -vo /dev/null -HFastly-Debug:1

例えば、公開 URL がwww.mymagento.bizの場合、次のようなコマンドを入力して実稼動サイトをテストします。

curl -k https://www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud -H 'Host: www.mymagento.biz' -vo /dev/null -HFastly-Debug:1

応答ヘッダーを確認

  • Fastly-Magento-VCL-Uploaded が存在する必要があります
  • X-Magento-Tags が返されます。
  • Fastly-Module-Enabled は、Yes または Fastly 拡張機能バージョン番号のいずれかである必要があります
  • X-Cache は HIT または HIT、HIT のいずれかである必要があります
  • x-cache-hits は 1,1 にしてください
  • キャッシュコントロール : max-age は 0 より大きくなければなりません
  • プラグマはキャッシュする必要があります

次の例では、Pragma、X-Magento-Tags および Fastly-Module-Enabled の正しい値を示しています。

curl コマンドの出力は長くなる場合があります。 以下は概要に過ぎません。

* STATE: INIT => CONNECT handle 0x600057800; line 1402 (connection #-5000)
    * Rebuilt URL to: https://www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud/
    * Added connection 0. The cache now contains 1 members
    * Trying 192.0.2.31...
    * STATE: CONNECT => WAITCONNECT handle 0x600057800; line 1455 (connection #0)
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
    0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud (54.229.163.31) port 443 (#0)
    * STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057800; line 1562 (connection #0)
    0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* ALPN, offering h2

    ... portion omitted for brevity ...

    < Set-Cookie: mage-messages=%5B%5D; expires=Wed, 22-Nov-2017 17:39:58 GMT; Max-Age=31536000; path=/
    < Pragma: cache
    < Expires: Wed, 23 Nov 2016 17:39:56 GMT
    < Cache-Control: max-age=86400, public, s-maxage=86400, stale-if-error=5, stale-while-revalidate=5
    < X-Magento-Tags: cb_welcome_popup store cb cb_store_info_mobile cb_header_promotional_bar cb_store_info cb_discount-promo-bar cpg_2 cb_83 cb_81 cb_84 cb_85 cb_86 cb_87 cb_88 cb_89 p5646 catalog_product p5915 p6040 p6197 p6227 p7095 p6109 p6122 p6331 p7592 p7651 p7690
    < Fastly-Module-Enabled: yes
    < Strict-Transport-Security: max-age=31536000
    < Content-Security-Policy: upgrade-insecure-requests
    < X-Content-Type-Options: nosniff
    < X-XSS-Protection: 1; mode=block
    < X-Frame-Options: SAMEORIGIN
    < X-Platform-Server: i-dff64b52
    <
    * STATE: PERFORM => DONE handle 0x600057800; line 1955 (connection #0)
    * multi_done
    0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
    * Connection #0 to host www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud left intact

解決策 resolution

Fastly-Module-Enabled がない

応答ヘッダーで Fastly-Module-Enabled に「yes」が表示されない場合は、Fastly モジュールがインストールされ、選択されていることを確認する必要があります。

ステージング環境と実稼動環境で Fastly が有効になっていることを確認するには、各環境のCommerce管理者で設定を確認します。

  1. /admin の URL (または変更した管理 URL)を使用して、ステージング環境および実稼動環境の Admin Console にログインします。

  2. Stores > Configuration > Advanced > System に移動します。 スクロールして、「 フルページキャッシュ 」をクリックします。

  3. Fastly CDN が選択されていることを確認します。

  4. Fastly 設定 をクリックします。 Fastly サービス ID と Fastly API トークンが入力されていることを確認します(Fastly 資格情報)。 ステージング環境と実稼動環境に正しい資格情報が入力されていることを確認します。 ヘルプを表示するには、「 認証情報をテスト 」をクリックします。

  5. composer.json を編集し、Fastly モジュールがバージョンに含まれていることを確認します。 このファイルには、バージョンと共にすべてのモジュールがリストされています。

    • 「必須」セクションには、"fastly/magento2": <version number> が表示されています。

    • 「リポジトリ」セクションには、次が必要です。

      code language-none
      "fastly-magento2": {
          "type": "vcs",
          "url": "https://github.com/fastly/fastly-magento2.git"
      }
      
  6. Configuration Management を使用する場合は、設定ファイルが必要です。 app/etc/config.app.php (2.0、2.1)または app/etc/config.php (2.2)ファイルを編集し、設定 'Fastly_Cdn' => 1 が正しいことを確認します。 この設定は、'Fastly_Cdn' => 0 (無効を意味)にしないでください。 Fastly を有効にした場合は、設定ファイルを削除し、bin/magento magento-cloud:scd-dump コマンドを実行して更新します。 このファイルの手順については、『設定ガイド』の ​ システム固有の設定の管理例 ​ を参照してください。

モジュールがインストールされていない場合は、​ 統合環境 ​ ブランチにインストールし、ステージング環境と実稼動環境にデプロイする必要があります。 詳しくは、クラウドインフラストラクチャー上のCommerce ガイドの Fastly の設定 ​ を参照してください。

Fastly-Magento-VCL-Uploaded がありません

インストールおよび設定中に、Fastly VCL をアップロードしている必要があります。 これらは、作成したカスタム VCL スニペットではなく、Fastly モジュールによって提供される基本 VCL スニペットです。 Commerce手順については、『 Cloud Infrastructure ガイド』の Fastly VCL スニペットのアップロード ​ を参照してください。

X-Cache に MISS が含まれる

X-Cache が HIT、MISS または MISS、MISS の場合、同じ curl コマンドを再度入力して、ページが最近キャッシュから消去されていないことを確認します。

同じ結果が得られる場合は、curl コマンドを使用し、応答ヘッダーを確認します。

  • プラグマはキャッシュ
  • X-Magento-Tags が存在する
  • キャッシュコントロール : max-age が 0 より大きい

問題が解決しない場合は、別の拡張機能がこれらのヘッダーをリセットしている可能性があります。 ステージングで次の手順を繰り返して、拡張機能を無効にし、問題を引き起こしている拡張機能を見つけます。 問題の原因となっている拡張機能を見つけたら、実稼動環境でその拡張機能を無効にする必要があります。

  1. 拡張機能を無効にするには、Cloud Infrastructure ガイドのCommerceの ​ 拡張機能の管理 ​ の節で説明されている手順に従ってください。
  2. 拡張機能を無効にした後、System > Tools > Cache Management に移動します。
  3. Magento キャッシュをフラッシュ をクリックします。
  4. ここで、一度に 1 つの拡張機能を有効にして、設定を保存し、キャッシュをフラッシュします。
  5. curl コマンドを試して、応答ヘッダーを確認します。
  6. 手順 4 と 5 を繰り返して、curl コマンドを有効にしテストします。 Fastly ヘッダーが表示されなくなった場合は、拡張機能が Fastly で問題を引き起こしていることがわかります。

Fastly ヘッダーをリセットしている拡張機能を分離する場合は、拡張機能の開発者に問い合わせてください。 サードパーティの拡張機能開発者に対して、Fastly キャッシュを使用するための修正やアップデートを提供することはできません。

関連読み取り値

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f