在云端托管 React 应用程序可以非常便宜,也可以异常昂贵,这取决于您如何配置基础设施。在 AWS 中,Amazon S3 和 Amazon CloudFront 的组合是提供静态文件最有效的方式,但如果没有适当的优化,传输成本和请求费用可能会迅速累积。
在本指南中,我们将分析如何配置您的托管环境,使其对小型项目几乎免费,对大型应用程序极具成本效益。
免费托管神话 vs AWS S3 + CloudFront
Vercel 或 Netlify 等平台提供慷慨的免费层级,但当您的流量增长时,它们通常会收取高额溢价。相比之下,AWS 为您提供的是“原材料”价格。
AWS 免费套餐 (Free Tier)
如果您的账户注册未满 12 个月,您可以利用:
- S3: 5 GB 标准存储。
- CloudFront: 每月 1 TB 的出站数据传输(这对大多数网站来说绰绰有余!)。
- CloudFront: 1000 万次 HTTP/HTTPS 请求。
即使在免费套餐之外,存储一个 5MB 的 React 应用每月也只需几美分。
策略 1:优化 S3 存储
S3 的成本分为存储和请求(PUT、GET)。
- 版本清理: 如果您在存储桶上启用了版本控制,AWS 将保存每一个旧版本。请配置 生命周期策略 (Lifecycle Policy) 以自动删除 30 天前的版本。
- PUT 请求: 每次部署(
aws s3 sync)时,您都会执行 PUT 请求。如果您每天部署 50 次,这会积少成多。请使用仅上传更改文件的 CI/CD 工具。 - 存储类: 对于活跃网站,请使用 S3 Standard。不要对这么小的文件使用 Intelligent-Tiering,因为每个对象的管理成本将超过节省的费用。
策略 2:CloudFront 价格级 (Price Classes)
这是 AWS 中最大的“隐藏节省”。CloudFront 有三个价格级:
- 价格级 All: 使用全球所有边缘节点(最贵)。
- 价格级 200: 包含大多数地区,除了一些昂贵的地区(南美洲、非洲)。
- 价格级 100: 仅美国、加拿大和欧洲(最便宜)。
对于许多业务来说,价格级 100 就足够了,它可以显著减少您数据传输账单,而不会牺牲核心受众的访问速度。
策略 3:减少缓存失效 (Invalidation)
每次执行缓存失效(aws cloudfront create-invalidation)时,每月前 1,000 个路径是免费的。之后,AWS 会为每个失效路径收费。
专家提示: 不要每次部署都失效整个存储桶(/*)。更好的做法是使用 缓存破坏 (Cache Busting)(Vite 默认通过在文件名中添加哈希值来实现:index-a1b2c3.js)。如果文件名更改,您根本不需要失效任何内容;CloudFront 只需向源站请求新文件即可。
使用 React2AWS 实现自动化
手动配置 TTL (生存时间)、价格级和 S3 策略非常繁琐。我们的 React2AWS 工具生成的 Terraform 模板和 Bash 脚本已应用了以下优化:
- 自动压缩: 启用 Gzip/Brotli 以减少传输的 GB 数。
- OAC 安全策略: 防止直接访问 S3,节省存储桶出站成本。
- 最佳 TTL: 配置缓存,使您的资源在边缘节点保留更长时间,减少源站请求。
结论
AWS 是扩展能力最强的平台,通过这些策略,它也可以成为最便宜的平台。关键在于理解您是按需付费的:优化文件大小,明智选择价格级,并让 CloudFront 的缓存承担重任。
相关文章
准备好优化您的文件了吗?
试试我们的 React2AWS 生成器 工具。它是 100% 免费、私有的,且直接在您的浏览器中处理所有内容,无需任何服务器上传。