

# 创建缓存策略
<a name="cache-key-create-cache-policy"></a>

利用缓存策略，您可以通过控制缓存键中包含的值（URL 查询字符串、HTTP 标头和 Cookie）来提高缓存命中率。您可以使用 AWS Command Line Interface（AWS CLI）或 CloudFront API 在 CloudFront 控制台中创建缓存策略。

创建缓存策略后，将它附加到 CloudFront 分配中的一个或多个缓存行为。

------
#### [ Console ]

**创建缓存策略（控制台）**

1. 登录到 AWS 管理控制台 并通过以下网址在 CloudFront 控制台中打开 **Policies (策略)** 页面：[https://console.aws.amazon.com/cloudfront/v4/home?#/policies](https://console.aws.amazon.com/cloudfront/v4/home?#/policies)。

1. 选择**创建缓存策略**。

1. 为此缓存策略选择所需的设置。有关更多信息，请参阅 [了解缓存策略](cache-key-understand-cache-policy.md)。

1. 完成后，选择 **Create**（创建）。

创建缓存策略后，可以将它附加到缓存行为。

**将缓存策略附加到现有分配（控制台）**

1. 在 CloudFront 控制台中打开 **Distributions (分配)** 页面，网址为 [https://console.aws.amazon.com/cloudfront/v4/home#/distributions](https://console.aws.amazon.com/cloudfront/v4/home#/distributions)。

1. 选择要更新的分配，然后选择**行为**选项卡。

1. 选择要更新的缓存行为，然后选择**编辑**。

   或者，要创建新的缓存行为，请选择 **Create behavior**(创建行为)。

1. 在 **Cache key and origin requests**（缓存键和源请求）区域，请确保选择了 **Cache policy and origin request policy**（缓存策略和源请求策略）。

1. 对于 **Cache policy**（缓存策略），选择要附加到此缓存行为的缓存策略。

1. 在页面底部，选择 **Save changes**（保存更改）。

**将缓存策略附加到新分配（控制台）**

1. 通过 打开 CloudFront 控制台[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)

1. 选择 **Create distribution**（创建分配）。

1. 在 **Cache key and origin requests**（缓存键和源请求）区域，请确保选择了 **Cache policy and origin request policy**（缓存策略和源请求策略）。

1. 对于 **Cache policy**（缓存策略），选择要附加到此分发的原定设置缓存行为的缓存策略。

1. 为源、原定设置缓存行为和其他分配设置选择所需的设置。有关更多信息，请参阅 [所有分配设置参考](distribution-web-values-specify.md)。

1. 完成后，选择 **Create distribution**（创建分配）。

------
#### [ CLI ]

要使用 AWS Command Line Interface (AWS CLI) 创建缓存策略，请使用 **aws cloudfront create-cache-policy** 命令。您可以使用输入文件来提供命令的输入参数，而不是将每个单独的参数指定为命令行输入。

**创建缓存策略（带输入文件的 CLI）**

1. 使用以下命令创建名为 `cache-policy.yaml` 的文件，其中包含 **create-cache-policy** 命令的所有输入参数。

   ```
   aws cloudfront create-cache-policy --generate-cli-skeleton yaml-input > cache-policy.yaml
   ```

1. 打开刚创建的名为 `cache-policy.yaml` 的文件。编辑该文件以指定所需的缓存策略设置，然后保存该文件。您可以从该文件中删除可选字段，但不要删除必填字段。

   有关缓存策略设置的更多信息，请参阅[了解缓存策略](cache-key-understand-cache-policy.md)。

1. 使用以下命令通过 `cache-policy.yaml` 文件中的输入参数创建缓存策略。

   ```
   aws cloudfront create-cache-policy --cli-input-yaml file://cache-policy.yaml
   ```

   记下命令输出中的 `Id` 值。这是缓存策略 ID，您需要它才能将缓存策略附加到 CloudFront 分配的缓存行为。

**将缓存策略附加到现有分配（带输入文件的 CLI）**

1. 使用以下命令保存要更新的 CloudFront 分配的分配配置。将 *distribution\$1ID* 替换为分配的 ID。

   ```
   aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
   ```

1. 打开刚创建的名为 `dist-config.yaml` 的文件。编辑该文件，对要更新的每个缓存行为进行以下更改以使用缓存策略。
   + 在缓存行为中，添加名为 `CachePolicyId` 的字段。对于字段的值，请使用创建策略后记下的缓存策略 ID。
   + 从缓存行为中删除 `MinTTL`、`MaxTTL`、`DefaultTTL` 和 `ForwardedValues` 字段。这些设置是在缓存策略中指定的，因此不能将这些字段和一个缓存策略包含在相同的缓存行为中。
   + 将 `ETag` 字段重命名为 `IfMatch`，但不更改字段的值。

   完成后保存该文件。

1. 使用以下命令更新分配以使用缓存策略。将 *distribution\$1ID* 替换为分配的 ID。

   ```
   aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml
   ```

**将缓存策略附加到新分配（带输入文件的 CLI）**

1. 使用以下命令创建名为 `distribution.yaml` 的文件，其中包含 **create-distribution** 命令的所有输入参数。

   ```
   aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
   ```

1. 打开刚创建的名为 `distribution.yaml` 的文件。在默认缓存行为中，在 `CachePolicyId` 字段中输入创建策略后记下的缓存策略 ID。继续编辑该文件以指定所需的分配设置，然后在完成后保存该文件。

   有关分配设置的更多信息，请参阅[所有分配设置参考](distribution-web-values-specify.md)。

1. 使用以下命令通过 `distribution.yaml` 文件中的输入参数创建分配。

   ```
   aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
   ```

------
#### [ API ]

要使用 CloudFront API 创建缓存策略，请使用 [CreateCachePolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateCachePolicy.html)。有关您在此 API 调用中指定的字段的更多信息，请参阅[了解缓存策略](cache-key-understand-cache-policy.md)以及有关 AWS SDK 或其他 API 客户端的 API 参考文档。

创建缓存策略后，可以使用下列 API 调用之一将该缓存策略附加到缓存行为：
+ 要将该配置附加到现有分配中的缓存行为，请使用 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)。
+ 要将该配置附加到新分配中的缓存行为，请使用 [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html)。

对于这两个 API 调用，请在缓存行为中的 `CachePolicyId` 字段中提供缓存策略的 ID。有关您在这些 API 调用中指定的其他字段的更多信息，请参阅 [所有分配设置参考](distribution-web-values-specify.md) 以及有关 AWS SDK 或其他 API 客户端的 API 参考文档。

------