AWS 刷新 CDN 的详细指南
一、什么是 AWS CDN(Amazon CloudFront)
Amazon CloudFront 是 AWS 提供的一项内容分发网络(CDN)服务,它能够将对象(如网站静态资源、视频、图像等)缓存到全球多个边缘站点,使用户能够从距离他们更近的位置获取内容,从而显著提高内容的加载速度和可用性。
二、为何需要刷新 CDN
当源存储空间中的内容发生更新后,默认情况下,CloudFront 会按照其配置的缓存策略来缓存内容,在某些情况下,可能需要强制 CloudFront 刷新其缓存,以确保用户能够及时获取到最新的内容。
网站内容更新:如网页文本、图片、样式表或脚本的修改。
产品信息变动:对于电商网站,商品价格、库存等信息更新后需要立即生效。
错误修正:修复了网页中的显示错误或数据错误后,希望用户不再看到旧的错误内容。
三、刷新 CDN 的方法
1、登录 AWS 管理控制台,打开 CloudFront 服务页面。
2、在“Distributions”列表中找到要刷新的目标分配。
3、点击该分配对应的“ID”,进入分配详情页面。
4、在“General”选项卡下,找到“Invalidations”部分,点击“Create Invalidation”。
5、在弹出的“Create Invalidation”窗口中:
“Path”字段:输入要刷新的文件路径,可以是一个具体的文件路径,也可以是目录路径(以“/”结尾表示目录下的所有文件),如果要刷新网站的首页图片“example.jpg”,则输入“/images/example.jpg”;若要刷新整个“images”目录下的所有图片,则输入“/images/”。
“Caller Reference”字段:这是一个用于标识本次无效请求的唯一字符串,方便后续查询和管理,可以输入任意有意义的名称,如日期时间戳或相关描述。
6、点击“Create Invalidation”按钮,提交无效请求,CloudFront 会开始处理该请求,并在“Invalidations”列表中显示其状态和进度。
1、确保已安装并配置好 AWS CLI,可以使用以下命令检查是否已安装:
aws --version
2、运行以下命令创建无效请求(假设已设置好相关的 AWS 凭证和区域):
aws cloudfront create-invalidation --distribution-id [DISTRIBUTION_ID] --paths "[PATH]"
[DISTRIBUTION_ID]
替换为实际的 CloudFront 分配 ID,[PATH]
是要刷新的文件路径,格式与在控制台中输入的类似。
aws cloudfront create-invalidation --distribution-id EEXAMPLE --paths "/images/"
执行该命令后,CLI 会返回一个包含无效请求 ID 等信息的结果,可以通过该 ID 后续查询无效请求的状态。
四、监控刷新进度和结果
提交无效请求后,可以在 CloudFront 分配详情页面的“Invalidations”部分查看每个无效请求的状态,可能的状态包括:
状态 | 含义 |
InProgress | CloudFront 正在处理无效请求,这可能需要一些时间,具体取决于要刷新的内容数量和分布情况。 |
Completed | 无效请求已完成,CloudFront 已开始从源存储空间重新获取并缓存新的内容。 |
如果使用 CLI 创建了无效请求,可以使用以下命令查询其状态:
aws cloudfront list-invalidations --distribution-id [DISTRIBUTION_ID]
这将返回一个包含所有无效请求信息的列表,包括每个请求的 ID、状态、创建时间等详细信息。
五、相关问题与解答
(一)问题:刷新 CDN 是否会立即生效?
解答:刷新 CDN 并不是立即生效的过程,当提交无效请求后,CloudFront 会逐步将旧的缓存内容标记为无效,并开始从源存储空间重新获取新的内容进行缓存,这个过程的时间取决于多种因素,如要刷新的内容数量、网络带宽、源存储空间的响应速度等,可能需要几分钟到几小时不等的时间才能在全球范围内完成缓存的更新,使所有用户都能获取到新的内容。
(二)问题:是否可以批量刷新多个文件或目录?
解答:是的,无论是通过 AWS 管理控制台还是 AWS CLI,都可以一次性指定多个文件路径或目录路径进行批量刷新,在管理控制台的“Create Invalidation”窗口中,“Path”字段支持输入多行路径,每行一个路径;在 AWS CLI 的“create-invalidation”命令中,可以使用“–paths”参数多次指定不同的路径,用空格分隔即可,这样可以方便地对多个相关文件或目录进行统一的缓存刷新操作,提高工作效率。