如何为API请求正确禁用CloudFront缓存

问题描述 投票:4回答:1

我已将AWS CloudFront设置为提供静态内容来自同一域的API服务器。这意味着我有两种行为,一种行为来自/api的API网关,另一种行为来自S3的所有其他路径。

问题是我不希望CF缓存来自API服务器的任何内容。我很惊讶地发现似乎没有完全禁用缓存行为的“主设置”。相反,文档指的是在来源上使用Cache-control: no-cache在CF行为中启用“基于所有标头的缓存”。

但是,这些解决方案都不能完全满足我对不缓存and通过所有标头的要求。如果将Cache-control: no-cache添加到我的原点,CF似乎会尊重这一点,但是仍然存在CF设置的问题。 CF的设置为“基于标题的缓存:全部/无/白名单”。文档说,要禁用缓存,应使用“全部”,这是有道理的(尽管与实际设置相比有些模糊:禁用缓存:开/关)。但是,一旦将此设置设置为“全部”,就会禁用整个行为,并且我的API请求将完全不会到达API网关,而是默认为用于非API请求的S3行为。我对此找不到任何解释,就像整个行为失败或没有解释而被禁用。

另一个问题是,“基于...的缓存”中不存在的标头不仅会从缓存中排除(无论如何我都不希望如此),而且还会在转发请求之前将其从请求中删除。对于缓存按预期工作可能是有意义的,但是由于我不希望任何缓存,因此必须确保将我曾经使用的所有标头列入白名单,这非常令人沮丧。依靠“ All”会比确保白名单始终保持最新状态要好得多。所以:

1)是否有更好,更清晰的方法来完全禁用CloudFront分发的一个路径的缓存?理想情况下,它甚至不应该依赖原始设置某些标头,而应该完全禁止任何在配置的路径中缓存请求的尝试。

2)为什么在“基于标题的缓存”框中选择“全部”时,为什么禁用了整个API网关目标?这是怎么回事?

我已将AWS CloudFront设置为提供来自同一域的静态内容和API服务器。这意味着我有两种行为,一种行为来自/ api的API网关,另一种行为来自S3的内容,用于...

caching aws-api-gateway amazon-cloudfront cache-control
1个回答
0
投票
只是遇到了同样的问题,最终就此与AWS帮助联系。
© www.soinside.com 2019 - 2024. All rights reserved.