撤銷快取內容

本頁面說明如何撤銷 Cloud CDN 快取的內容。

舉例來說,如果位於 /images/file.jpg 的檔案已快取,且需要失效,您可以使用多種方法來讓檔案失效,具體取決於您想影響的範圍是該檔案本身,還是更廣泛的範圍。在每個情況下,您可以針對所有主機名稱或僅針對單一主機名稱撤銷。

如要進一步瞭解快取撤銷,請參閱「快取撤銷總覽」。

事前準備

您可以使用 Google Cloud CLI 或 Google Cloud 控制台執行撤銷作業。

您可以透過下列兩種方式存取 Google Cloud CLI:

  • 按照「使用 apt-get 安裝」中的操作說明安裝 Google Cloud CLI。如果您之前沒有使用過 Google Cloud CLI,請先執行 gcloud init 進行驗證。

  • 使用已預先安裝 gcloudCloud Shell

如要建立具有必要權限的自訂角色,請參閱「建立及管理自訂角色」。

如要新增預先定義的角色,請使用 IAM 快速入門指南

只讓單一檔案失效

主控台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往「Cloud CDN」

  2. 按一下來源。

  3. 按一下「Cache invalidation」(快取撤銷) 分頁標籤。

  4. 在「相關聯的負載平衡器」中,選取負載平衡器。

  5. 在「指定要撤銷的物件」下方,執行下列操作:

    • 針對「主機」,請指定主機名稱,除非您想針對所有主機名稱撤銷路徑。
    • 針對「Path」,指定路徑和檔案名稱,例如 /images/file.jpg
  6. 按一下 [Invalidate] (撤銷)

gcloud

使用 gcloud compute url-maps invalidate-cdn-cache 指令

如要只指定要失效的一個檔案,請使用 --path 標記搭配檔案名稱。

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --path "/images/file.jpg"

URL_MAP_NAME 替換為網址對應的名稱。如要列出網址對應,請使用 gcloud compute url-maps list 指令。

如要只針對單一主機失效,請新增 --host 標記,例如 --host host1.com

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --host host1.com \
    --path "/images/file.jpg"

根據預設,Google Cloud CLI 會等到失效作業完成。如要在背景執行無效化作業,請在指令列中附加 --async

API

請使用 urlMaps.invalidateCache 方法

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 控制台專案 ID
  • URL_MAP_NAME:網址對應項目的名稱

如要指定要失效的檔案,請使用下列 JSON 要求主體範例:

{
  "path": "/images/file.jpg"
}

如要只讓單一主機的檔案失效,請使用以下 JSON 要求主體範例:

{
  "host": "host1.com",
  "path": "/images/file.jpg"
}

讓整個目錄失效

主控台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往「Cloud CDN」

  2. 按一下來源。

  3. 按一下「Cache invalidation」(快取撤銷) 分頁標籤。

  4. 在「相關聯的負載平衡器」中,選取負載平衡器。

  5. 在「指定要撤銷的物件」下方,執行下列操作:

    • 針對「主機」,請指定主機名稱,除非您想針對所有主機名稱撤銷路徑。
    • 針對「Path」,請指定路徑和星號做為萬用字元,例如 /images/*
  6. 按一下 [Invalidate] (撤銷)

gcloud

使用 gcloud compute url-maps invalidate-cdn-cache 指令

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --path "/images/*"

URL_MAP_NAME 替換為網址對應項目的名稱。

如要只針對單一主機失效,請新增 --host 標記,例如 --host host1.com

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --host host1.com \
    --path "/images/*"

API

請使用 urlMaps.invalidateCache 方法

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 控制台專案 ID
  • URL_MAP_NAME:網址對應項目的名稱

如要指定要停用的目錄,請使用下列 JSON 要求主體範例:

{
  "path": "/images/*"
}

如要只讓單一主機的資料夾失效,請使用下列 JSON 要求主體範例:

{
  "host": "host1.com",
  "path": "/images/*"
}

依據快取標記撤銷

主控台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往「Cloud CDN」

  2. 按一下來源。

  3. 按一下「Cache invalidation」(快取撤銷) 分頁標籤。

  4. 在「相關聯的負載平衡器」中,選取負載平衡器。

  5. 在「指定要撤銷的物件」下方,針對「快取標記」,指定要撤銷的一或多個標記。請使用空格或半形逗號分隔代碼。

  6. 按一下 [Invalidate] (撤銷)

gcloud

使用 gcloud beta compute url-maps invalidate-cdn-cache 指令

gcloud beta compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --tags=TAGS

更改下列內容:

  • URL_MAP_NAME:網址對應項目的名稱
  • TAGS:標記或以半形逗號分隔的標記清單;您最多可以指定 10 個此標記

舉例來說,如果後端回應包含 Cache-Tag 標頭,且標頭含有不明確的使用者 ID (例如 UUID4 或其他形式的 GUID),您可以使用 tag 標記,讓特定使用者的所有內容失效。此外,如要只讓某個主機的內容失效 (例如測試環境),請新增 --host 標記。

gcloud beta compute url-maps invalidate-cdn-cache url_map_1 \
    --tags="1115b8f4-f804-4861-9629-8cb9aecdeeb3" \
    --host="host1.com"

API

請使用 urlMaps.invalidateCache 方法

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 控制台專案 ID
  • URL_MAP_NAME:網址對應項目的名稱

如要指定無效的快取標記,請使用下列 JSON 要求主體範例:

{
  "cacheTags": [
    "tag1",
    "tag2"
  ]
}

您可以指定單一標記或以半形逗號分隔的標記清單。

如要只針對單一主機使用快取標記,請使用下列 JSON 要求主體範例:

{
  "host": "host1.com",
  "path": "tag1,tag2"
}

撤銷所有內容

雖然您可以讓所有內容失效,但這可能會帶來風險。請先仔細評估需求,再繼續操作。

主控台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往「Cloud CDN」

  2. 按一下來源。

  3. 按一下「Cache invalidation」(快取撤銷) 分頁標籤。

  4. 在「相關聯的負載平衡器」中,選取負載平衡器。

  5. 在「指定要撤銷的物件」下方,執行下列操作:

    • 針對「主機」,請指定主機名稱,除非您想針對所有主機名稱撤銷路徑。
    • 如要指定路徑,請使用星號,例如 /*
  6. 按一下「Invalidate」(失效),然後點選「Confirm」(確認),表示您希望 Cloud CDN 將所有內容設為失效。

gcloud

使用 gcloud compute url-maps invalidate-cdn-cache 指令

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --path "/*"

更改下列內容:

  • URL_MAP_NAME:網址對應項目的名稱
  • /*:您要讓其失效的網址路徑,不含主機名稱;路徑可使用明確的檔案名稱或星號做為萬用字元

如要只針對單一主機失效,請新增 --host 標記,例如 --host host1.com

gcloud compute url-maps invalidate-cdn-cache URL_MAP_NAME \
    --host host1.com \
    --path "/*"

API

請使用 urlMaps.invalidateCache 方法

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_NAME/invalidateCache

更改下列內容:

  • PROJECT_ID:您的 Google Cloud 控制台專案 ID
  • URL_MAP_NAME:網址對應項目的名稱

如要指定無效網址路徑,請使用下列 JSON 要求主體範例:

{
  "path": "/*"
}

如要讓某個主機的網址路徑失效,請使用下列 JSON 要求主體範例:

{
  "host": "host1.com",
  "path": "/*"
}

查看無效化要求的狀態

Cloud CDN 會針對每個無效作業產生兩個記錄行,一個是在接受無效作業時,另一個是在完成時。第一個包含主機和路徑資訊。

如要查看失效要求的狀態,或是在清單瀏覽最近提交的要求,請使用 Cloud Logging 或 Cloud Monitoring。

主控台

  1. 前往 Google Cloud 控制台的「Cloud CDN」頁面。

    前往「Cloud CDN」

  2. 按一下來源。

  3. 按一下「Cache invalidation」(快取撤銷) 分頁標籤。

  4. 如要查看撤銷要求的狀態和結果,請按一下「前往 Cloud Logging」

gcloud

以下是使用記錄功能的範例指令:

gcloud logging read 'protoPayload.methodName="v1.compute.urlMaps.invalidateCache"' \
    --limit=10

以下是使用監控功能的查詢範例:

protoPayload.serviceName="compute.googleapis.com"
protoPayload.methodName="v1.compute.urlMaps.invalidateCache"

後續步驟

  • 如要確認 Cloud CDN 是否從快取提供回應,請參閱「查看記錄」。
  • 如要瞭解哪些內容可快取或無法快取,請參閱快取總覽