

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 附录 B：静态内容配置
<a name="appendix-b-plugins-installation-and-configuration"></a>

 默认情况下，将所有内容 WordPress 存储在本地网络服务器上，即用于[单服务器部署的块存储 (AmazonEBS) 和用于[弹性部署](elastic-deployment.md)](simple-deployment.md)的文件存储 (AmazonEFS)。除了降低存储和数据传输成本外，将静态资产转移到 Amazon S3 还提供可扩展性、数据可用性、安全性和性能。

 在此示例中，W3 总缓存 (W3TC) 插件用于在 Amazon S3 上存储静态资产。但是，还有其他具有类似功能的插件可用。如果您想使用替代方案，可以相应地调整以下步骤。这些步骤仅涉及与此示例相关的功能或设置。本文档讨论不包含所有设置的说明。有关更多信息，请参阅 [wordp [ress.org](https://wordpress.org/) 上的 W3 Total Cache 插件页面](https://wordpress.org/plugins/w3-total-cache/)。

# 创建用户
<a name="user-creation"></a>

您需要为 WordPress 插件创建一个用户，以便在 Amazon S3 中存储静态资产。有关步骤，请参阅在[您的AWS账户中创建用户](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)。

 **注意：**角色提供了一种更好的AWS资源访问管理方式，但在撰写本文时，W3 Total Cache 插件不支持[角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。

 记下用户安全凭证，并以安全的方式存储它们，以后您需要这些证书。

# Amazon S3 存储桶创建
<a name="amazon-s3-bucket-creation"></a>

1.  首先，在您选择的AWS区域创建 Amazon S3 存储桶。有关步骤，请参阅[创建存储桶](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)。按照[教程：在 Amazon S3 上配置静态网站，为存储桶启用静态网站](https://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html)托管。

1.  创建策略以向先前创建的用户提供对指定 S3 存储桶的访问权限，并将该策略附加到该用户。有关创建以下策略的步骤，请参阅[管理策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)。

   ```
   {
   "Version": "2012-10-17",
   "Statement": [
         {
                   "Sid": "Stmt1389783689000",
                   "Effect": "Allow",
                   "Principal": "*",
                   "Action": [
                          "s3:DeleteObject",
                          "s3:GetObject",
                          "s3:GetObjectAcl",
                          "s3:ListBucket",
                          "s3:PutObject",
                          "s3:PutObjectAcl"
                   ],
                   "Resource": [
                          "arn:aws:s3:::wp-demo",
                          "arn:aws:s3:::wp-demo/*"
                   ]
            }
      ]
   }
   ```

1.  从 WordPress 管理面板安装并激活 W3TC 插件。

1. 浏览到插件配置的 **“常规设置”** 部分，并确保**浏览器缓存**和**CDN**均已启用。

1. 从CDN配置的下拉列表中选择 O **rigin Push：Amazon CloudFront**（此选项以 Amazon S3 作为其来源）。

1.  浏览到插件配置的 “浏览器缓存” 部分，并启用**过期**、**缓存控制**和**实体标签 (ETag)** 标头。

1. 还要激活 **“设置更改后防止缓存对象**” 选项，这样每当更改任何设置时，都会生成一个新的查询字符串并将其附加到对象中。

1.  浏览到插件配置CDN部分，输入您之前创建的用户的安全凭证以及 S3 存储桶的名称。

1. 如果您通过提供网站服务 CloudFront URL，请在相关框中输入分发域名。否则，请输入一个或多个CNAMEs自定义域名。

1.  最后，使用 W3TC 插件导出媒体库并将 wp-includes、主题文件和自定义文件上传到 Amazon S3。这些上传功能可在**CDN**配置页面的 “**常规**” 部分中找到。

# 静态原点创建
<a name="static-origin-creation"></a>

 现在，静态文件已存储在 Amazon S3 上，请返回 CloudFront 控制台中的 CloudFront 配置，将 Amazon S3 配置为静态内容的来源。为此，请添加指向您为此目的创建的 S3 存储桶的第二个源。然后再创建两个缓存行为，分别针对两个文件夹（`wp-content`和`wp-includes`），这两个文件夹（和）应使用 S3 源而不是动态内容的默认来源。以相同的方式配置两者：
+  仅HTTPGET处理请求。
+  Amazon S3 不会根据 Cookie 或HTTP标头改变其输出，因此您可以通过不通过将它们转发到源站来提高缓存效率 CloudFront。
+  尽管这些行为仅提供静态内容（不接受任何参数），但您仍会将查询字符串转发到源。这样，您就可以使用查询字符串作为版本标识符，以便在部署新版本时立即使旧CSS文件失效。有关更多信息，请参阅《[Amazon CloudFront 开发者指南》](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ReplacingObjects.html)。

**注意**  
将静态起源行为添加到您的 CloudFront 分配后，请检查顺序以确保静态内容的`wp-admin/*`行为优先级高于静态内容的行为。`wp-login.php`否则，您可能会在访问管理面板时看到奇怪的行为。