

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

# 讓檔案失效時的注意事項
<a name="invalidation-specifying-objects"></a>

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

**區分大小寫**  
失效路徑區分大小寫。例如，`/images/image.jpg` 和 `/images/Image.jpg` 指定兩個不同的檔案。

**使用 Lambda 函數變更 URI**  
如果您的 CloudFront 分佈在檢視器請求事件中觸發 Lambda 函數，而且該函數變更了請求檔案的 URI，我們建議您使以下兩種 URI 失效，以便從 CloudFront 邊緣快取中移除檔案：  
+ 在檢視器請求中的 URI
+ 函數予以變更之後的 URI

**Example 範例**  
例如，假設您的 Lambda 函數變更了檔案的 URI，而其原本為：  
`https://d111111abcdef8.cloudfront.net/index.html`  
到包含語言目錄的 URI：  
`https://d111111abcdef8.cloudfront.net/en/index.html`  
若要使該檔案失效，您必須指定以下路徑：  
+ `/index.html`
+ `/en/index.html`
如需詳細資訊，請參閱[Invalidation paths](#invalidation-specifying-objects-paths)。

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

 **轉送 Cookie**  
如果您配置 CloudFront 轉送 Cookie 到原始伺服器，則 CloudFront 邊緣快取可能包含檔案的多個版本。當您使檔案失效後，CloudFront 會使該檔案的每個快取版本皆失效，無論其是否與 Cookie 關聯。您無法根據關聯的 Cookie 選擇性地使某些版本而不是其他版本失效。如需詳細資訊，請參閱[根據 Cookie 快取內容](Cookies.md)。

 **Forwarding headers** (轉送標頭)  
如果您配置 CloudFront 轉送標頭清單到原始伺服器，並且根據標頭的值進行快取，則 CloudFront 邊緣快取可能包含檔案的多個版本。當您使檔案失效後，CloudFront 會使該檔案的每個快取版本皆失效，無論其標頭值為何。您無法根據標頭值選擇性地使某些版本而不是其他版本失效。(如果您將 CloudFront 配置為將所有標頭轉送到原始伺服器，CloudFront 不會快取您的檔案。) 如需詳細資訊，請參閱[根據請求標頭快取內容](header-caching.md)。

 **轉送查詢字串**  
如果您配置 CloudFront 轉送查詢字串至原始伺服器，使檔案失效時您必須包含查詢字串，如以下範例所示：  
+ `/images/image.jpg?parameter1=a`
+ `/images/image.jpg?parameter1=b`
如果用戶端請求包含針對同一檔案的五種不同查詢字串，則您可以使該檔案失效五次，每一查詢字串一次，或者也可在失效路徑中使用 \$1 萬用字元，如以下範例所示：  
`/images/image.jpg*`  
如需有關在失效路徑使用萬用字元的詳細資訊，請參閱[Invalidation paths](#invalidation-specifying-objects-paths)。  
如需查詢字串的詳細資訊，請參閱[根據查詢字串參數快取內容](QueryStringParameters.md)。  
若要判斷哪些查詢字串使用中，您可以啟用 CloudFront 記錄功能。如需詳細資訊，請參閱[存取日誌 （標準日誌）](AccessLogs.md)。

**允許的上限**  
如需允許的失效數量上限詳細資訊，請參閱 [並行失效請求上限](InvalidationLimits.md)。

 **Microsoft Smooth Streaming file** (Microsoft Smooth Streaming 檔案)  
當您已啟用對應快取行為的 Smooth Streaming 時，您不能使 Microsoft Smooth Streaming 格式中的媒體檔案失效。

 **Non-ASCII or unsafe characters in the path** (路徑中非 ASCII 或不安全字元)  
如果路徑包含非 ASCII 字元或 [RFC 1738](https://tools.ietf.org/html/rfc1738) 中定義的不安全字元，請將這些字元進行 URL 編碼。切勿對路徑中的任何其他字元進行 URL 編碼，否則 CloudFront 不會使更新後檔案的舊版本失效。  
請勿在路徑中使用 `~` 字元。CloudFront 不支援此字元的失效，無論其是否為 URL 編碼。

 **Invalidation paths** (失效路徑)  
路徑與分佈有關。例如，要使在 `https://d111111abcdef8.cloudfront.net/images/image2.jpg` 的檔案失效，您可以指定 `/images/image2.jpg`。  
在 [CloudFront 主控台](https://console.aws.amazon.com/cloudfront/v4/home)中，您可以省略路徑中的前導斜線，如：`images/image2.jpg`。直接使用 CloudFront API 時，無效驗證路徑須以前綴斜線開頭。
您也可以使用 `*` 萬用字元使多個檔案同時失效。取代 0 或多個字元的 `*`，必須是失效路徑的最後一個字元。  
若要在失效中使用萬用字元 (\$1)，您必須將萬用字元放在路徑尾端。插入其他任何位置的星號 (\$1) 都會視為常值字元相符，而不是萬用字元失效。
如果您使用 AWS Command Line Interface (AWS CLI) 使檔案失效，並指定包含`*`萬用字元的路徑，則必須在類似 的路徑周圍使用引號 (`"`)`"/*"`。  
路徑的長度上限為 4,000 個字元。  

**Example 範例：失效路徑**  
+ 使某個目錄中的所有檔案失效：

  `/`*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](#invalidation-lambda-at-edge)。  
如果失效路徑是一個目錄且如果您尚未標準化指定目錄的方法 (包含或不含結尾斜線 (/))，我們建議您，讓包含及不包含結尾斜線的目錄皆失效，例如 `/images` 和 `/images/`。

**Signed URLs** (簽署的 URL)  
如果您使用已簽章的 URL，則透過僅包含問號 (？) 前面的 URL 部分以使檔案失效。