使檔案失效時需要知道的事項 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使檔案失效時需要知道的事項

當您指定要失效的檔案時,請參閱下列資訊:

區分大小寫

無效路徑區分大小寫。例如, /images/image.jpg/images/Image.jpg指定兩個不同的檔案。

使用 Lambda URI 函數變更

如果您的 CloudFront 分佈在檢視器請求事件上觸發 Lambda 函數,且如果函數變更請求檔案URI的 ,建議您將這兩個函數都失效URIs,以從 CloudFront邊緣快取中移除檔案:

  • 檢視器請求URI中的

  • 函數變更URI之後的

範例

假設您的 Lambda 函數從下列位置變更檔案URI的 :

https://d111111abcdef8.cloudfront.net/index.html

前往URI包含語言目錄的 :

https://d111111abcdef8.cloudfront.net/en/index.html

若要使該檔案失效,您必須指定以下路徑:

  • /index.html

  • /en/index.html

如需詳細資訊,請參閱Invalidation paths

預設根物件

若要使預設根物件 (檔案) 失效,請以您為任何其他檔案指定路徑的相同方式指定其路徑。如需詳細資訊,請參閱預設根物件的運作方式

轉送 Cookie

如果您設定 CloudFront 將 Cookie 轉送至原始伺服器, CloudFront edge 快取可能包含多個版本的檔案。當您將檔案失效時, 會 CloudFront 驗證檔案的每個快取版本,無論其相關聯的 Cookie 為何。您無法根據關聯的 Cookie 選擇性地使某些版本而不是其他版本失效。如需詳細資訊,請參閱根據餅乾緩存內容

Forwarding headers (轉送標頭)

如果您設定 CloudFront 將標頭清單轉送至原始伺服器,並根據標頭的值進行快取, CloudFront 則edge 快取可能包含多個版本的檔案。當您將檔案失效時, CloudFront無論標頭值為何, 檔案的每個快取版本都會失效。您無法根據標頭值選擇性地使某些版本而不是其他版本失效。(如果您設定 CloudFront 將所有標頭轉送到原始伺服器, CloudFront 不會快取您的檔案。) 如需詳細資訊,請參閱根據要求標頭快取內容

轉送查詢字串

如果您設定 CloudFront 將查詢字串轉送至原始伺服器,則必須在使檔案失效時包含查詢字串,如下列範例所示:

  • /images/image.jpg?parameter1=a

  • /images/image.jpg?parameter1=b

如果用戶端請求包含針對同一檔案的五種不同查詢字串,則您可以使該檔案失效五次,每一查詢字串一次,或者也可在失效路徑中使用 * 萬用字元,如以下範例所示:

/images/image.jpg*

如需有關在失效路徑使用萬用字元的詳細資訊,請參閱Invalidation paths

如需查詢字串的詳細資訊,請參閱根據查詢字串參數快取內容

若要判斷哪些查詢字串正在使用中,您可以啟用 CloudFront記錄。如需詳細資訊,請參閱配置和使用標準日誌(訪問日誌)

允許的上限

如需允許的失效次數上限的詳細資訊,請參閱 並行失效請求上限

Microsoft Smooth Streaming file (Microsoft Smooth Streaming 檔案)

當您為對應的快取行為啟用 Smooth Streaming 時,您無法將 Microsoft Smooth Streaming 格式的媒體檔案失效。

路徑中的非ASCII或不安全字元

如果路徑包含 RFC1738 中定義的非ASCII字元或不安全字元, URL- 會編碼這些字元。請勿 URL- 編碼路徑中的任何其他字元,或 CloudFront 不會使更新檔案的舊版本失效。

Invalidation paths (失效路徑)

路徑與分佈有關。例如,若要使 的檔案失效https://d111111abcdef8.cloudfront.net/images/image2.jpg,請指定 /images/image2.jpg

注意

CloudFront主控台 中,您可以省略路徑中的正斜線,如下所示:images/image2.jpg。當您直接使用 CloudFront API 時,無效路徑必須以正斜線開頭。

您也可以使用 * 萬用字元使多個檔案同時失效。取代 0 或多個字元的 *,必須是失效路徑的最後一個字元。

重要

若要在無效中使用萬用字元 (*),您必須在路徑結尾放置萬用字元。插入任何位置的星號 (*) 會視為文字字元比對,而非萬用字元無效。

如果您使用 AWS Command Line Interface (AWS CLI) 使檔案失效,並指定包含*萬用字元的路徑,則必須在類似 的路徑周圍使用引號 (""/*"

路徑的長度上限為 4,000 個字元。

範例:無效路徑
  • 若要使目錄中的所有檔案失效:

    /directory-path/*

  • 若要使目錄、其所有子目錄和目錄和子目錄中的所有檔案失效:

    /directory-path*

  • 為了使所有名稱相同,但不同的檔案名稱延伸的檔案失效,例如 logo.jpg、logo.png 和 logo.gif:

    /directory-path/file-name.*

  • 若要使檔案名稱以相同字元開頭的目錄中的所有檔案失效 (例如影片的所有檔案的HLS格式),無論檔案名稱副檔名為何:

    /directory-path/initial-characters-in-file-name*

  • 當您根據查詢字串參數 CloudFront 設定快取,且您想要使檔案的每個版本失效時:

    /directory-path/file-name.file-name-extension*

  • 若要使分佈中的所有檔案失效:

    /*

如需有關使用 Lambda 函數變更 時使檔案失效的資訊URI,請參閱 Changing the URI Using a Lambda Function

如果失效路徑是一個目錄且如果您尚未標準化指定目錄的方法 (包含或不含結尾斜線 (/)),我們建議您,讓包含及不包含結尾斜線的目錄皆失效,例如 /images/images/

已簽署 URLs

如果您使用的是已簽署的 URLs,請只包含問號 (?) URL之前的 部分,使檔案失效。