静的コンテンツのデプロイメント戦略
静的コンテンツのデプロイメント(SCD)は、画像、スクリプト、CSS、ビデオ、テーマ、ロケール、web ページなどの生成するコンテンツの量と、コンテンツを生成するタイミングに依存するストアデプロイメントプロセスに大きな影響を与えます。 例えば、デフォルトの方法では、サイトがメンテナンスモードの場合、 デプロイフェーズの間、静的コンテンツが生成されます。ただし、この方法では、マウントされた pub/static
ディレクトリにコンテンツを直接書き込むのに時間がかかります。 必要に応じて、デプロイメント時間を短縮するのに役立つオプションや戦略がいくつかあります。
JavaScriptおよびHTML コンテンツの最適化
静的コンテンツのデプロイメント中にバンドルおよび縮小を使用して、最適化されたJavaScriptおよびHTML コンテンツを構築できます。
コンテンツの縮小
デプロイメントディレクトリ内の静的ビューファイルのコピーをスキップし、必要に応じてHTMLを 縮小 生成すると、デプロイメントプロセス中の SCD の読み込み時間を短縮で var/view_preprocessed
ます。 この機能を有効にするには、.magento.env.yaml
ファイルで、グローバル環境変数 SKIP_HTML_MINIFICATION を true
に設定します。
ece-tools
パッケージバージョン 2002.0.13 以降、SKIP_HTML_MINIFICATION 変数のデフォルト値は true
に設定されています。不要なテーマファイルの数を減らすことで、デプロイメント時間とディスク領域を より 節約できます。 例えば、magento/backend
のテーマを英語でデプロイし、カスタムテーマを他の言語でデプロイすることができます。 これらのテーマ設定は、環境変数 SCD_MATRIX を使用して設定できます。
デプロイ方法の選択
デプロイメント戦略は、ビルド フェーズ、デプロイ フェーズ、または オンデマンド で静的コンテンツを生成することを選択するかどうかによって異なります。 次のチャートに示すように、デプロイフェーズでは静的コンテンツを生成することが、最適な選択ではありません。 HTMLが縮小されていても、各コンテンツファイルをマウントされた ~/pub/static
ディレクトリにコピーする必要があり、時間がかかる場合があります。 静的コンテンツをオンデマンドで生成することは、最適な選択と思われます。 ただし、コンテンツファイルがキャッシュに存在しない場合は、リクエストされた瞬間に生成されるので、読み込み時間がユーザーエクスペリエンスに長くなります。 したがって、ビルドフェーズでは静的コンテンツを生成するのが最適です。
ビルド時の SCD の設定
縮小されたHTMLを使用したビルドフェーズでの静的コンテンツの生成は、ダウンタイムなし デプロイメント、または 理想的な状態 に最適な設定です。 マウントされたドライブにファイルをコピーする代わりに、./init/pub/static
ディレクトリからシンボリックリンクを作成します。
静的コンテンツを生成するには、テーマとロケールにアクセスする必要があります。 Adobe Commerceは、テーマをファイルシステムに格納します。これはビルドフェーズでアクセスできますが、Adobe Commerceはデータベースにロケールを格納します。 データベースは、ビルドフェーズでは使用 できません。 ビルドフェーズで静的コンテンツを生成するには、ece-tools
パッケージで config:dump
コマンドを使用してロケールをファイルシステムに移動する必要があります。 ロケールが読み取られ、app/etc/config.php
ファイルに保存されます。
ece-tools
パッケージで config:dump
コマンドを実行すると、config.php
ファイルにダンプされた設定は 管理ダッシュボードではロック(グレー表示)されます。 管理者でこのような設定を更新する唯一の方法は、ファイルからローカルに設定を削除し、プロジェクトを再デプロイすることです。>また、インスタンスに新しいストア/ストアグループ/web サイトを追加するたびに、
config:dump
コマンドを実行してデータベースが同期されていることを確認する必要があります。 また、config.php
ファイルに ダンプする設定を選択することもできます。>フィールドがグレー表示されていてこの手順を実行しなかったため、
config.php
ファイルからストア/ストアグループ/web サイト設定を削除した場合、ダンプされなかった新しいエンティティは、次のデプロイメント時にデータベースから削除されます。ビルド時に SCD を生成するようにプロジェクトを設定するには:
-
ローカルワークステーションで、をプロジェクトディレクトリに変更します。
-
SSH を使用してリモート環境にログインします。
code language-bash magento-cloud ssh
-
ロケールをファイルシステムに移動し、
config.php
ファイルを更新します。 -
.magento.env.yaml
設定ファイルには、次の値を含める必要があります。- SKIP_HTML_MINIFICATION は
true
です - ビルド ステージの SKIP_SCD は
false
です - SCD_STRATEGY は
compact
です
- SKIP_HTML_MINIFICATION は
-
.magento.app.yaml
ファイルでの デプロイ後のフックの設定を確認します。 -
理想的な状態のスマート ウィザードを実行して、設定を確認します。
code language-bash php ./vendor/bin/ece-tools wizard:ideal-state
SCD のオンデマンド設定
SCD をオンデマンドで生成することは、統合環境における開発ワークフローに最適です。 デプロイメント時間が短縮されるので、実装をすばやく確認したり、統合テストを実行したりできます。 .magento.env.yaml
ファイルのグローバルステージで SCD_ON_DEMAND 環境変数を有効にします。 変数 SCD_ON_DEMAND は、SCD に関連するその他すべての設定をオーバーライドし、~/pub/static
ディレクトリの既存のコンテンツを消去します。
SCD オンデマンド戦略を使用する場合、ホームページなど、要求するページをキャッシュにプリロードすると便利です。 .magento.env.yaml
ファイルのデプロイ後のステージの WARM_UP_PAGES 環境変数に、必要なページのリストを追加します。
SCD をスキップしています
静的コンテンツの生成を完全にスキップすることもできます。 SKIP_SCD 環境変数をグローバルステージで設定して、SCD に関連する他の設定を無視できます。 これは、~/pub/static
ディレクトリ内の既存のコンテンツには影響しません。