静态内容部署策略
静态内容部署(SCD)对存储部署过程有显着影响,这取决于要生成多少内容(如图像、脚本、CSS、视频、主题、区域设置和网页)以及何时生成内容。 例如,当站点处于维护模式时,默认策略会在部署阶段期间生成静态内容;但是,此部署策略需要一些时间才能将内容直接写入装入的pub/static
目录。 您可以通过多种选项或策略来帮助您根据自己的需求缩短部署时间。
优化JavaScript和HTML内容
您可以使用捆绑和缩小在静态内容部署期间构建优化的JavaScript和HTML内容。
缩小内容
如果您跳过复制var/view_preprocessed
目录中的静态视图文件并在请求时生成 缩小的 HTML,则可以缩短部署过程中的SCD加载时间。 您可以通过在.magento.env.yaml
文件中将SKIP_ENVIRONMENT_MINIFICATION全局HTML变量设置为true
来激活此环境。
ece-tools
包版本2002.0.13开始,SKIP_VARIABLES_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
配置文件应包含以下值:- SKIP_HTML_MINIFICATION为
true
- 生成阶段中的SKIP_SCD为
false
- SCD_STRATEGY为
compact
- SKIP_HTML_MINIFICATION为
-
验证
.magento.app.yaml
文件中Post部署挂接的配置。 -
通过运行智能向导来验证您的设置,以获得理想的状态。
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
目录中的现有内容。