You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2+Apache部署场景下,如何清除CloudFront HTML缓存?

清除CloudFront中HTML页面缓存的可行方法

Hey there, let's walk through the practical ways to clear HTML page caches on CloudFront for your e-commerce and CMS sites hosted on Apache EC2. Here are the most reliable methods you can use:

方法1:通过AWS控制台手动创建缓存失效

这是最直观的方式,适合偶尔手动操作的场景:

  • 登录AWS管理控制台,找到CloudFront服务入口
  • 定位到对应你的电商/CMS站点的CloudFront分发
  • 切换到失效标签页
  • 点击「创建失效」按钮
  • 在「对象路径」输入框里,按需指定要清除的HTML页面:
    • 单页面清除:比如 /product-detail.html 或者 /cms/article/123.html
    • 批量清除所有HTML页面:用通配符 /*.html(提醒:这个会清除分发下所有HTML文件,确认需求后再用)
  • 点击「创建失效」,等待CloudFront完成缓存更新,通常需要2-15分钟,取决于分发规模

方法2:使用AWS CLI命令行工具

如果你习惯用命令行或者需要批量操作,AWS CLI会更高效:

  1. 先确保你的AWS CLI已经配置好对应权限(需要cloudfront:CreateInvalidation权限)
  2. 执行对应命令:
    • 单页面缓存失效:
      aws cloudfront create-invalidation --distribution-id YOUR_DISTRIBUTION_ID --paths "/product-detail.html"
      
    • 所有HTML页面缓存失效:
      aws cloudfront create-invalidation --distribution-id YOUR_DISTRIBUTION_ID --paths "/*.html"
      
  3. 命令执行后会返回一个失效ID,你可以用它查询进度:
    aws cloudfront get-invalidation --distribution-id YOUR_DISTRIBUTION_ID --id YOUR_INVALIDATION_ID
    

方法3:通过AWS SDK/API实现自动化清除

如果你的CMS或电商系统需要在发布内容后自动触发缓存清除(比如新文章上线时),可以用AWS SDK调用API来实现:
下面是Python(boto3)的示例代码:

import boto3
import datetime

cloudfront_client = boto3.client('cloudfront')

# 创建缓存失效请求
response = cloudfront_client.create_invalidation(
    DistributionId='YOUR_DISTRIBUTION_ID',
    InvalidationBatch={
        'Paths': {
            'Quantity': 1,
            'Items': [
                '/cms/new-article.html'  # 替换为你要清除的页面路径
            ]
        },
        'CallerReference': f'invalidation-{datetime.datetime.now().isoformat()}'
    }
)

print(f"缓存失效已提交,失效ID:{response['Invalidation']['Id']}")

注意:CallerReference需要是唯一值,这里用时间戳来保证,避免重复请求。

一些关键注意事项

  • 权限控制:执行缓存失效的账号必须拥有cloudfront:CreateInvalidation权限,建议通过IAM策略精准配置,避免过度授权
  • 成本说明:CloudFront每月前1000次缓存失效是免费的,超出次数会按标准收费,所以尽量精准指定路径,减少不必要的全量失效
  • 替代思路:如果不想频繁手动失效,可以在Apache中给HTML页面设置合理的Cache-Control响应头(比如max-age=3600),同时给静态资源用版本化文件名(比如article-123-v2.html),这样新内容会被CloudFront自动拉取,无需手动清除缓存

内容的提问来源于stack exchange,提问作者Sudesh Lakmal Pathirana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:13:54