获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

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

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

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 控制台中,访问发布存储设置对话框:

    • 对于您的直播频道
      在站点的Release History表中,单击 ,然后选择Release storage settings

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

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

设置预览通道的到期时间

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

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

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

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

  • 火力地堡命令行
    当您部署到预览通道时,传递--expires DURATION标志,例如:

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

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

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

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

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

此功能对于版本跟踪非常有用,或者如果您希望确信您部署的内容与您在其他频道上查看和/或测试过的内容完全相同。这里有些例子:

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

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

  • 从“staging”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. 单击 ,然后选择删除

手动删除预览频道

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

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

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

  • 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