FastlyのキャッシュがAdobe Commerce上のクラウドインフラストラクチャで動作しない
この記事では、Fastlyのキャッシュがサイトで機能しない問題を修正します。 Fastlyは、Adobe Commerce on cloud infrastructureのプランと実装に含まれるCDNおよびキャッシングサービスです。 Fastly拡張機能が機能していることを確認したり、Fastly拡張機能をデバッグしたりするには、curl コマンドを使用して特定の応答ヘッダーを表示できます。 これらの応答ヘッダーの値は、Fastlyが有効になっていて適切に機能しているかどうかを示します。 ヘッダーとキャッシュ動作の値に基づいて、問題をさらに調査できます。
この情報は、ライブサイトとオリジンサーバーのFastly ヘッダーを検証し、テストするのに役立ちます。
説明 description
環境
- 商品:Adobe Commerce on cloud infrastructure
- バージョン: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 ヘッダーの値を返します。
-
ターミナルで、次のコマンドを入力して、ライブサイト 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 -
応答ヘッダーを確認して、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にする必要があります
- Cache-Control: 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管理者で各環境の設定を確認します。
-
ステージングおよび実稼動用の管理コンソールに、
/admin(または変更された管理URL)を含むURLを使用してログインします。 -
ストア
>構成>詳細>システム に移動します。 スクロールして、 フルページキャッシュ をクリックします。 -
Fastly CDNが選択されていることを確認します。
-
Fastly Configurationをクリックします。 Fastly サービス IDとFastly API トークン(Fastlyの資格情報)が入力されていることを確認します。 ステージング環境と実稼動環境に正しい資格情報が入力されていることを確認します。 「資格情報をテスト 」をクリックしてヘルプを表示します。
-
composer.jsonを編集し、バージョンにFastly モジュールが含まれていることを確認します。 このファイルには、すべてのモジュールとバージョンが一覧表示されます。-
「要求」セクションには、
"fastly/magento2": <version number>が必要です -
「リポジトリ」セクションでは、次の項目を使用する必要があります。
code language-none "fastly-magento2": { "type": "vcs", "url": "https://github.com/fastly/fastly-magento2.git" }
-
-
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 on Cloud Infrastructure ガイドの手順については、Fastlyの設定を参照してください。
Fastly-Magento-VCL-Uploadedが存在しない
インストールおよび設定中に、Fastly VCLをアップロードしておく必要があります。 これらは、Fastly モジュールが提供するベースのVCL スニペットであり、作成するカスタム VCL スニペットではありません。 手順については、『Commerce on Cloud Infrastructure Guide 』の「Fastly VCL スニペットのアップロード 」を参照してください。
X-CacheにMISSが含まれる
X-CacheがHIT、MISS、MISSのいずれかである場合は、ページが最近キャッシュから削除されていないことを確認するために、同じcurl コマンドをもう一度入力します。
同じ結果が得られた場合は、curl コマンドを使用し、応答ヘッダーを検証します。
- プラグマはキャッシュです
- X-Magento-Tags exists
- Cache-Control: max-ageが0より大きい
問題が解決しない場合は、別の拡張機能がこれらのヘッダーをリセットしている可能性があります。 ステージングで次の手順を繰り返し、拡張機能を無効にして、問題の原因となっている拡張機能を見つけます。 問題の原因となっている拡張機能を見つけたら、実稼動環境で拡張機能を無効にする必要があります。
- 拡張機能を無効にするには、Commerce Cloud Infrastructure ガイドの拡張機能の管理 セクションで説明されている手順に従います。
- 拡張機能を無効にした後、 システム
>ツール>キャッシュ管理に移動します。 - 「Magento キャッシュをフラッシュ 」をクリックします。
- 次に、一度に1つの拡張機能を有効にして、設定を保存し、キャッシュをフラッシュします。
- curl コマンドを試し、応答ヘッダーを確認します。
- 手順4と5を繰り返して、curl コマンドを有効にしてテストします。 Fastlyのヘッダーが表示されなくなった場合、拡張機能がFastlyに問題を引き起こしていることに気付きました。
Fastly ヘッダーをリセットしている拡張機能を分離する場合は、拡張機能の開発者にお問い合わせください。 サードパーティの拡張機能の開発者がFastly キャッシュを使用するための修正やアップデートを提供することはできません。