管理直播和直播預覽您網站的頻道、版本和版本

Firebase Hosting 透過 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 控制台中,存取發布儲存設定對話框:

    • 對於您的直播頻道
      在您網站的發布記錄表中,按一下 ,然後選擇發佈儲存設定

    • 對於任何預覽通道
      在預覽頻道行中,按一下 ,然後選擇頻道設定

  2. 輸入您要保留的版本數,然後按一下「儲存」

設定預覽頻道的過期時間

預設情況下,預覽頻道會在創建之日起 7 天後過期,但您網站的直播頻道永遠不會過期。

當預覽頻道到期時,該頻道及其發布版本和關聯版本將計劃在 24 小時內刪除。關聯的預覽 URL 也被停用。此版本刪除的例外是版本與另一個版本關聯(例如,如果您將版本從同一網站內的一個頻道複製到另一個頻道,就會發生這種情況)。

託管支援兩種不同的方式來控制通道的過期:

  • Firebase 控制台
    在預覽頻道行中,按一下 ,然後選擇頻道設定。輸入到期日和時間。

  • Firebase CLI
    當您部署到預覽頻道時,請傳遞--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 CLI
    從任意目錄執行以下命令:

    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