我有一个使用React.js,HTML和Java脚本开发的Web应用程序。 此react.js Web应用程序调用后端REST API。
我已将此Web应用程序托管在AWS S3上。
我能够使用HTTP访问Web应用程序。
要启用基于HTTP的访问,我计划使用AWS云前端。
我没有太多的静态媒体内容,但是几乎没有CSS,js和小的图像。
据我了解,Cloud front的定价基于
就我而言,当用户请求网页或想要搜索记录时,Web应用程序会向后端进行HTTPs调用。
我想知道是否将此对后端的每个请求都视为"Invalidation Request"
?
还是无效请求仅在更改静态内容(HTML,CSS,JS,图像)时才适用?
是否还有其他具有成本效益的选项可以为基于S3的Web应用程序启用HTTP?
答案 0 :(得分:1)
仅当您想清除CloudFront缓存的缓存内容(即文件的旧版本)并使用新版本时,才创建invalidation request
。
使用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分钟以上。