Amazon web services 使Cloudfront无效';通过传入自定义头来缓存数据

Amazon web services 使Cloudfront无效';通过传入自定义头来缓存数据,amazon-web-services,amazon-cloudfront,aws-api-gateway,amazon-cloudformation,Amazon Web Services,Amazon Cloudfront,Aws Api Gateway,Amazon Cloudformation,我需要一些资源或一般指导 我正在考虑使用Cloudfront来帮助解决呼叫我的服务的延迟问题 我希望能够为缓存数据提供服务,但需要允许客户机能够指定何时绕过缓存数据并获取最新数据 我知道我可以在查询参数中发送一个随机值以使缓存无效。但我希望能够发送一个自定义头,将做同样的事情 理想情况下,我希望使用在后台通过API网关创建的Cloudfront。这可能吗?或者我需要创建一个新的CloudFront来坐在API网关前面吗 有人这样做过吗?有什么资源可以给我指点吗?CloudFront基于头进行缓存

我需要一些资源或一般指导

我正在考虑使用Cloudfront来帮助解决呼叫我的服务的延迟问题

我希望能够为缓存数据提供服务,但需要允许客户机能够指定何时绕过缓存数据并获取最新数据

我知道我可以在查询参数中发送一个随机值以使缓存无效。但我希望能够发送一个自定义头,将做同样的事情

理想情况下,我希望使用在后台通过API网关创建的Cloudfront。这可能吗?或者我需要创建一个新的CloudFront来坐在API网关前面吗


有人这样做过吗?有什么资源可以给我指点吗?

CloudFront基于头进行缓存

创建自定义标题并在该标题上创建白名单。 如果在缓存中找不到该值,CloudFront将从源站获取

希望能有帮助

编辑:

基于头的缓存。

实际上,不能通过传递特定头或使用查询参数来使CloudFront缓存无效。这是缓存破坏,而不是失效

您可以将CloudFront配置为在缓存键中包含特定标头的值,只需将该标头列入白名单以转发到源站,即使源站忽略它

然而。。。需要为API消费者提供一种绕过缓存的方法,这似乎是您的设计存在问题。使用自适应的
缓存控制
响应头,将响应缓存在CloudFront中一段适当的时间,这个问题就会消失


否则,聪明的人会一直绕过它,不断更改该值。

因此,如果我将一个头列为白名单,这意味着如果我将该头与请求一起传入,cloudfront将绕过缓存,直接从源位置提取?关闭,但不完全是。。。这意味着CyrdFrand会考虑头和它的值作为请求的缓存密钥的一部分,就像路径是请求的缓存密钥的一部分。code>GET/foo+
某些标题:buzz
将被视为与
GET/foo
+
某些标题:fizz
不同的“页面”(对象),以及与根本不存在
某些标题的
GET/foo
不同的“页面”(对象)。每个组合都是一个不同的对象,因此
Some Header:
的每个唯一值都是单独缓存的——或者如果缓存中没有针对
Some Header:
的特定值(或不存在)的请求,则查询源代码。谢谢,这很有帮助!我还有一个相关的问题。如果我使用的是api网关,我仍然对如何将其列入白名单感到困惑。我在这里添加了一个问题:如果我将一个头列为白名单,这意味着如果我将该头与我的请求一起传递(以及该头的唯一值),cloudfront将绕过缓存,直接从源位置提取?这可以使用api gateway在幕后创建的cloudfront来完成吗?是的。无论您集成了什么代理后端,都可以使用cloudfront实现这一点。如果不在幕后创建的cloudfront的基础上创建新的cloudfront,则似乎不可能在API网关中白名单标题。添加了引用文档。如果不是这样,你似乎做错了什么。因为它对我来说是有效的。