0

在s3上托管网站之后,我们如何才能在其网页中对文本进行更改。我从存储桶中删除了较旧的html文件,并通过代码中的更新文本以相同的名称上传了新文件。但刷新这些网页后没有反映出任何变化。如何更新aws s3上托管的网站的网页?

是否有其他方法可以更新已经在s3上托管的网站的网页?如果有的话,请在这里发布步骤进行更新? TIA。

回答

6

我注意到您的代码中存在CloudFront,因此很可能是问题所在。当您将文件上传到S3时,如果CloudFront是现有文件,它将不会立即知道它。相反,它将默认设置为24小时,以检查源(在本例中为S3存储桶)是否进行了任何更改以及是否需要更新缓存。有几种方法可以更新这些文件的缓存:

  • 使用名称中包含版本的文件并更新链接。缺点是你必须做出比平常更多的改变才能实现这一目标。
  • Invalidating the cache。这不是亚马逊推荐的,但它是一种使缓存立即吸收新​​变化的快速方法。需要注意的是可以有charges if you do a lot of invalidations

不另收费每月请求无效第1000条路径。此后,$ 0.005每路径请求无效

Setting CloudFront behaviors

在这里你可以指定一个路径(个人文件,文件夹等),调整某些属性。其中之一是所讨论路径的TTL(生存时间)。如果您将TTL设置为较小的值,则CloudFront将更快地获取更改。但是,由于您有S3来源注意,您必须处理请求分配。另外,CloudFront需要一些时间将这些更改分发到所有边缘服务器。

希望这会有所帮助。

+0

*“此外,CloudFront需要一些时间将这些更改分发到所有边缘服务器。”*此声明涉及哪些“更改”?缓存行为设置的更改?还是改变对象?还要注意的是,通过使用无效路径'*'或'/ *'为分配中的所有内容创建一个无效请求仅对每月1000个空闲分配计为1无效。以这种方式完成后,被驱逐物体的数量并不是成本的一​​个因素。 CloudFront最初启动后添加了此功能。 –

+0

@ Michael-sqlbot我指的是无效。如果我无效,我会返回一个ID并将其更改为正在进行状态。我非常感谢你对失效分配的澄清。这只是指出,虽然成本很低,但有可能被收取费用。我倾向于自己做失效,因为我很难改变现有的文件。 –

+0

偶尔有一种误解,认为已更改的对象被“推送”到CloudFront,导致[复制延迟](https://stackoverflow.com/a/35541525/1695906),这当然不会发生。我不认为你是这么说的,但想要验证。感谢澄清。 –

0

您不需要删除旧文件即可在S3中更新新文件。使用版本控制来避免意外更新对象。

S3基本上有以下一致的模型。 1.读取新对象的写入一致性后读取。 2.覆盖现有对象和删除对象的最终一致性。

相关问题