

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

# 使路徑失效時需要知道什麼
<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` 
如果用戶端請求包含針對同一檔案的五種不同查詢字串，則您可以使該檔案失效五次，每一查詢字串一次，或者也可在失效路徑中使用 \* 萬用字元，如以下範例所示：  
 `/images/image.jpg*`   
如需有關在失效路徑使用萬用字元的詳細資訊，請參閱[Invalidation paths](#invalidation-specifying-objects-paths)。  
如需查詢字串的詳細資訊，請參閱[根據查詢字串參數快取內容](QueryStringParameters.md)。  
若要判斷哪些查詢字串使用中，您可以啟用 CloudFront 記錄功能。如需詳細資訊，請參閱[存取日誌 （標準日誌）](AccessLogs.md)。

  **允許的最大數量**   
如需允許的失效數量上限詳細資訊，請參閱 [失效的配額](cloudfront-limits.md#limits-invalidations)。

  **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 或多個字元的 `*`，必須是失效路徑的最後一個字元。  
若要在失效中使用萬用字元 (\*)，您必須將萬用字元放在路徑尾端。插入其他任何位置的星號 (\*) 都會視為常值字元相符，而不是萬用字元失效。
如果您使用 AWS Command Line Interface (AWS CLI) 使檔案失效，並指定包含`*`萬用字元的路徑，則必須在類似 的路徑周圍使用引號 (` "`)`"/*"`。  
路徑的長度上限為 4,000 個字元。  

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

   `/` {{directory-path}} `/*` 
+ 若要使某個目錄、其所有子目錄以及該目錄與子目錄中的所有檔案失效：

   `/` {{directory-path}} `*` 
+ 為了使所有名稱相同，但不同的檔案名稱延伸的檔案失效，例如 logo.jpg、logo.png 和 logo.gif：

   `/` {{directory-path}} `/` {{檔案名稱}} `.*` 
+ 無論檔案名稱延伸如何，若要使檔案名稱以相同字元開頭的目錄中的所有檔案（例如 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/`。

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