静的コンテンツのデプロイメント戦略
静的コンテンツのデプロイメント(SCD)は、画像、スクリプト、CSS、ビデオ、テーマ、ロケール、web ページなどの生成するコンテンツの量と、コンテンツを生成するタイミングに依存するストアデプロイメントプロセスに大きな影響を与えます。 例えば、デフォルトの方法では、サイトがメンテナンスモードの場合、 デプロイフェーズの間、静的コンテンツが生成されます。ただし、この方法では、マウントされた pub/static
ディレクトリにコンテンツを直接書き込むのに時間がかかります。 必要に応じて、デプロイメント時間を短縮するのに役立つオプションや戦略がいくつかあります。
JavaScriptとHTMLコンテンツの最適化
静的コンテンツのデプロイメント中にバンドルおよび縮小を使用して、最適化されたJavaScriptおよびHTMLコンテンツを構築できます。
コンテンツの縮小
デプロイメントディレクトリ内の静的ビューファイルのコピーをスキップし、必要に応じて 縮小 HTMLを生成すると、デプロ var/view_preprocessed
メントプロセス中の SCD の読み込み時間を短縮できます。 この機能を有効にするには、.magento.env.yaml
ファイルで SKIP_ENVIRONMENT_MINIFICATION グローバルHTML変数を true
に設定します。
ece-tools
パッケージバージョン 2002.0.13 以降、SKIP_VARIATION_MINIFICATIONHTMLのデフォルト値は 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
ファイルに保存されます。
ビルド時に SCD を生成するようにプロジェクトを設定するには:
-
ローカルワークステーションで、をプロジェクトディレクトリに変更します。
-
SSH を使用してリモート環境にログインします。
code language-bash magento-cloud ssh
-
ロケールをファイルシステムに移動し、
config.php
ファイルを更新します。 -
.magento.env.yaml
設定ファイルには、次の値を含める必要があります。- HTML SKIP_MINIFICATION_MINIFICATION が
true
である - ビルド ステージの SKIP_SCD は
false
です - SCD_STRATEGY は
compact
です
- HTML SKIP_MINIFICATION_MINIFICATION が
-
.magento.app.yaml
ファイルの Post-deploy フックの設定を確認します。 -
理想的な状態のスマート ウィザードを実行して、設定を確認します。
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
ディレクトリ内の既存のコンテンツには影響しません。