管理您網站的實時和預覽頻道、版本和版本

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