首页 > 解决方案 > AWS S3:React 失效请求的定价。托管在 S3 上的 Node.js 应用程序

问题描述

我有一个使用 React.js、HTML 和 Java 脚本开发的 Web 应用程序。此 react.js Web 应用程序调用后端 REST API。

我在 AWS S3 上托管了这个 Web 应用程序。

我能够使用 HTTP 访问 Web 应用程序。

为了启用基于 HTTPS 的访问,我计划使用 AWS 云前端。

我没有太多静态媒体内容,但很少有 css、js 和一些小图像。

据我了解,云前端的定价基于

  1. 数据传输量
  2. HTTP/HTTPS 请求数
  3. 无效请求

就我而言,当用户请求网页或想要搜索记录时,Web 应用程序会向后端发出 HTTPs 调用。

我想知道这对后端的每个请求是否都被视为"Invalidation Request"

还是仅在更改静态内容(HTML、CSS、JS、图像)时才适用失效请求?

为基于 S3 的 Web 应用程序启用 HTTPS 是否有任何其他经济有效的选择?

标签: amazon-web-servicesamazon-s3amazon-cloudfront

解决方案


invalidation request如果您想清除缓存内容(即旧版本的文件)的 CloudFront 缓存并使用新版本, 您只会创建一个。

对于您的 React / HTML / CSS 项目,您将把它放在 S3 存储桶中,并将您的 S3 存储桶设置为 CloudFront 的源。当 CloudFront 从 S3 获取对象时,它会将它们缓存在其边缘缓存中,以便将来请求对象的 TTL(生存时间)。该对象将保留在那里,在 TTL 过期之前,CloudFront 不会检查您的源以获取该对象的新版本。

失效请求将告诉 CloudFront 从缓存中清除对象,并且由于它们不再在缓存中,当请求到达 CloudFront 时,它将从您的 S3 存储桶中获取对象。

基本上,每次发布新的生产构建时,您都需要 CloudFront 使用对象的新版本,因此每次将对象的新版本投入生产时都需要进行失效。

您可以在此处阅读有关失效和失效成本的更多信息: https ://aws.amazon.com/blogs/aws/simplified-multiple-object-invalidation-for-amazon-cloudfront/

值得注意的是,我们每天发布 5-10 个版本,我们的 CodePipeline 会为我们处理失效问题。我们从未为无效支付任何费用。另外,请注意,根据我的经验,根据失效对象的数量,失效可能需要几分钟到 30 多分钟不等。


推荐阅读