Check out what’s new from Firebase at Google I/O 2022. Learn more

管理您网站的实时和预览频道、版本和版本

Firebase 托管通过 Firebase 控制台和 Firebase CLI 提供工具来管理您的托管站点的频道、版本和版本。

托管基础架构概述

了解托管基础架构可帮助您了解本页所述的管理选项。

每个 Firebase 项目都有一个默认托管站点,可以访问项目的所有资源(数据库、身份验证、函数等)。一个站点包含一个或多个频道,其中每个频道都与一个提供特定内容的 URL 和一个托管配置相关联。

Firebase 托管层次结构的图像

每个托管站点都有一个“实时”频道,在 (1) 站点的 Firebase 配置的子域( SITE_ID .web.appSITE_ID .firebaseapp.com )和 (2) 任何连接的自定义域中提供内容和托管配置。您还可以选择创建“预览”频道,在临时的、可共享的“预览 URL”( SITE_ID -- CHANNEL_ID - RANDOM_HASH .web.app )上提供自己的内容和配置。

每个通道提供的内容和配置被打包到一个具有唯一标识符的版本对象中。当您部署到您的站点时,Firebase 会创建一个指向特定版本的发布对象。发布包含有关部署的元数据,例如部署人员和部署时间。

在 Firebase 项目的托管信息中心,您可以在发布历史记录表中查看直播频道发布的完整历史记录。如果您有多个托管站点,请单击所需站点的查看以查看其发布历史记录。如果您有任何预览频道,它们也会显示在托管仪表板上。

管理频道的设置

对于您网站的每个频道,您可以控制其设置。某些设置(例如频道过期)仅适用于预览频道。

限制要保留的版本数量

每次您部署到频道(并创建版本)时,Hosting 都会将与先前版本关联的版本保存在项目的 Hosting 存储中。您可以为项目中的每个频道(实时频道和预览频道)设置要保留的发布数量。

  • 为什么 Hosting 保留以前的版本?
    对于您的直播频道,如果需要,保留以前的版本可以让您回滚到网站的以前版本。对于您的预览频道,尚不支持回滚。

  • 为什么要限制要保留的版本数量?
    此功能可以帮助您控制项目托管存储的使用级别,因为以前版本的内容保存在此存储中。您可以从控制台中的存储选项卡监控您的托管存储。

  • 当您限制要保留的版本时会发生什么?
    当您为要保留的版本设置限制时,任何超过您设置的限制的版本的内容都会被安排删除,首先从最旧的版本开始

以下是设置频道发布存储限制的方法:

  1. Firebase 控制台中,访问发布存储设置对话框:

    • 对于您的直播频道
      在您站点的发布历史记录表中,单击 ,然后选择发布存储设置

    • 对于任何预览频道
      在预览频道所在的行中,点击 ,然后选择Channel settings

  2. 输入您想要保留的版本数量,然后点击保存

设置预览频道的过期时间

默认情况下,预览频道自创建之日起 7 天后过期,但您网站的直播频道永不过期。

当预览频道到期时,该频道及其发布和相关版本将在 24 小时内被删除。关联的预览 URL 也被停用。此版本删除的一个例外是,如果一个版本与另一个版本相关联(例如,如果您将一个版本从一个频道克隆到同一站点内的另一个频道,则会发生这种情况)。

Hosting 支持两种不同的方式来控制频道的过期:

  • Firebase 控制台
    在预览频道所在的行中,点击 ,然后选择Channel settings 。输入到期日期和时间。

  • Firebase 命令行界面
    当您部署到预览频道时,传递--expires DURATION标志,例如:

    firebase hosting:channel:deploy new-awesome-feature --expires 7d

    自部署之日起,到期时间最长为 30 天。使用h表示小时,使用d表示天,使用w表示周(例如,分别为12h7d2w )。

将版本从一个频道克隆到另一个频道

您可以将已部署的版本从一个通道克隆到另一个通道。您可以跨实时或预览频道、跨托管站点甚至跨 Firebase 项目进行克隆。

克隆命令还部署到“目标”通道,以便克隆的托管内容和配置自动在“目标”通道的关联 URL 上提供。

此功能对于版本跟踪很有用,或者如果您希望确信自己正在部署您在另一个频道上查看和/或测试过的确切内容。这里有些例子:

  • 从“QA”预览频道克隆到您网站的直播频道(上线!)

  • 从您网站的实时频道克隆到“调试”预览频道(如回滚之前)

  • 从“暂存”Firebase 项目中的频道克隆到“prod”Firebase 项目中的预览频道

要克隆版本,请从任何目录运行以下命令:

firebase hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:TARGET_CHANNEL_ID

将每个占位符替换为以下内容:

  • SOURCE_SITE_IDTARGET_SITE_ID :这些是包含频道的托管站点的 ID。

    • 对于您的默认托管网站,请使用您的 Firebase 项目 ID。
    • 您可以指定位于同一 Firebase 项目甚至不同 Firebase 项目中的托管站点。
  • SOURCE_CHANNEL_IDTARGET_CHANNEL_ID :这些是通道的标识符。

    • 对于直播频道,使用live作为频道 ID。
    • 如果指定的“目标”频道尚不存在,则此命令会在部署到该频道之前创建该频道。

回滚到您网站的先前版本

您可以回滚以提供网站直播频道的先前版本。如果您的当前版本存在问题并且您希望回滚以提供您网站的已知工作版本,则此操作很有用。或者,您的网站可能会为假期或特殊活动提供临时内容,但现在您想回滚以提供“常规”内容。

通过回滚,您创建了一个新版本,该版本提供与先前版本相同的内容版本。在您的发布历史记录表中,两个版本都将列出相同的版本标识符。

以下是如何回滚:

  1. Firebase 控制台中,在您网站的发布历史记录表中,将鼠标悬停在您要回滚到的上一个版本条目上。

  2. 单击 ,然后选择回滚

手动删除版本

您可能需要手动从直播频道中删除版本,以便为您的项目释放托管存储空间。您只能删除以前的版本,而不是当前在您的实时站点上提供的版本。

当您删除一个版本时,您实际上是在删除其内容,计划在 24 小时内删除。发布对象本身被保留,以便您仍然可以看到它的元数据(部署人员和部署时间)。

以下是删除版本的方法:

  1. Firebase 控制台中,在您网站的发布历史记录表中,将鼠标悬停在您要删除的先前版本条目上。

  2. 单击 ,然后选择Delete

手动删除预览频道

您可以删除预览频道,但不能删除您网站的直播频道。

当您删除预览频道时,该频道及其发布和相关版本将在 24 小时内被安排删除。关联的预览 URL 也被停用。版本删除的一个例外是,如果一个版本与另一个版本相关联(例如,如果您将一个版本从一个频道克隆到同一站点内的另一个频道,则会发生这种情况)。

Hosting 支持两种不同的方式来删除预览频道:

  • Firebase 控制台
    在预览频道所在的行中,点击 ,然后选择Delete channel 。确认删除。

  • Firebase 命令行界面
    从任何目录运行以下命令:

    firebase hosting:channel:delete CHANNEL_ID

用于预览频道和克隆的 CLI 命令

预览通道的命令

如果您有多个托管站点,则预览频道的所有命令都支持部署目标。

命令描述
firebase hosting:channel:create CHANNEL_ID

使用指定的CHANNEL_ID默认托管站点中创建新的预览频道

此命令不会部署到通道。

firebase hosting:channel:delete CHANNEL_ID

删除指定的预览通道

您不能删除站点的直播频道。

firebase hosting:channel:deploy CHANNEL_ID

将您的托管内容和配置部署到指定的预览频道

如果预览频道尚不存在,此命令会在默认托管站点中创建频道,然后再部署到频道。

firebase hosting:channel:list列出默认托管站点中的所有频道(包括“直播”频道)
firebase hosting:channel:open CHANNEL_ID打开浏览器到指定频道的 URL,如果无法在浏览器中打开,则返回 URL

版本克隆命令

命令描述
firebase hosting:clone \
SOURCE_SITE_ID : SOURCE_CHANNEL_ID \
TARGET_SITE_ID : TARGET_CHANNEL_ID

将指定“源”通道上最近部署的版本克隆到指定“目标”通道

此命令还部署到指定的“目标”通道。如果“目标”频道尚不存在,则此命令会在“目标”托管站点中创建一个新的预览频道,然后再部署到该频道。

firebase hosting:clone \
SOURCE_SITE_ID :@ VERSION_ID \
TARGET_SITE_ID : TARGET_CHANNEL_ID

将指定版本克隆到指定的“目标”频道

此命令还部署到指定的“目标”通道。如果“目标”频道尚不存在,则此命令会在“目标”托管站点中创建一个新的预览频道,然后再部署到该频道。

您可以在 Firebase 控制台的托管信息中心找到VERSION_ID