静态内容部署策略

静态内容部署(SCD)对存储部署过程有显着影响,这取决于要生成多少内容(如图像、脚本、CSS、视频、主题、区域设置和网页)以及何时生成内容。 例如,当站点处于维护模式时,默认策略会在部署阶段期间生成静态内容;但是,此部署策略需要一些时间才能将内容直接写入装入的pub/static目录。 您可以通过多种选项或策略来帮助您根据自己的需求缩短部署时间。

优化JavaScript和HTML内容

您可以使用捆绑和缩小在静态内容部署期间构建优化的JavaScript和HTML内容。

缩小内容

如果您跳过复制var/view_preprocessed目录中的静态视图文件并在请求时生成​ 缩小的 HTML,则可以缩短部署过程中的SCD加载时间。 您可以通过在.magento.env.yaml文件中将SKIP_ENVIRONMENT_MINIFICATION全局HTML变量设置为true来激活此环境。

NOTE
ece-tools包版本2002.0.13开始,SKIP_VARIABLES_MINIFICATIONHTML的默认值设置为true

通过减少不必要的主题文件数,可以节省​ 更多 ​部署时间和磁盘空间。 例如,您可以部署英语版的magento/backend主题以及其他语言的自定义主题。 您可以使用SCD_MATRIX环境变量配置这些主题设置。

选择部署策略

根据您选择在​ 生成 ​阶段、部署 ​阶段还是​ 按需 ​阶段生成静态内容,部署策略有所不同。 如下图所示,在部署阶段生成静态内容是最不理想的选择。 即使使用最小化HTML,每个内容文件也必须复制到已装载的~/pub/static目录,这可能需要很长时间。 按需生成静态内容似乎是最佳选择。 但是,如果内容文件不存在于请求时生成的缓存中,则会增加用户体验的加载时间。 因此,在构建阶段生成静态内容是最理想的情况。

SCD加载比较

在生成时设置SCD

在生成阶段使用缩小的HTML生成静态内容是​零停机时间 ​部署的最佳配置,也称为​ 理想状态。 它将从./init/pub/static目录创建符号链接,而不是将文件复制到已装入的驱动器。

生成静态内容需要访问主题和区域设置。 Adobe Commerce将主题存储在文件系统中(可在构建阶段访问);但是,Adobe Commerce将区域设置存储在数据库中。 在生成阶段,数据库​ 不可用。 为了在生成阶段生成静态内容,您必须使用ece-tools包中的config:dump命令将区域设置移动到文件系统。 它读取区域设置并将它们保存在app/etc/config.php文件中。

要将项目配置为在生成 ​时生成SCD,请执行以下操作:

  1. 在本地工作站上,转到您的项目目录。

  2. 使用SSH登录到远程环境。

    code language-bash
    magento-cloud ssh
    
  3. 将语言环境移动到文件系统,然后更新config.php文件

  4. .magento.env.yaml配置文件应包含以下值:

  5. 验证.magento.app.yaml文件中Post部署挂接的配置。

  6. 通过运行智能向导来验证您的设置,以获得理想的状态

    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环境变量中添加预期页面列表。

WARNING
请勿在生产环境中使用SCD on-demand策略。

跳过SCD

有时,您可以选择完全跳过生成静态内容。 您可以在全局阶段中设置SKIP_SCD环境变量以忽略与SCD相关的其他配置。 这不会影响~/pub/static目录中的现有内容。

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26