使檔案無效時需知道的內容 - 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 邊緣快取可能包含檔案的多個版本。當您使檔案無效時,會使檔案的每個快取版本 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 檔案)

如果您已針對對應的快取行為啟用「平滑串流」,就無法使用 Microsoft 流暢串流格式的媒體檔案失效。

路徑中的非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

如果您使用的是 signedURLs,請僅在問號 (?) URL 之前加入部分來使檔案失效。