通过传入自定义标头使Cloudfront的缓存数据无效

时间:2017-09-27 18:02:20

标签: amazon-web-services amazon-cloudfront aws-api-gateway amazon-cloudformation

我需要一些资源或大方向。

我正在考虑使用Cloudfront来帮助解决对我的服务的调用延迟。

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

我知道我可以在查询参数中发送一个随机值来使缓存无效。但我希望能够发送一个自定义标题来执行相同的操作。

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

有人这样做过吗?你能指点我的资源吗?

2 个答案:

答案 0 :(得分:1)

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

您可以将CloudFront配置为在缓存键中包含特定标头的值,只需将该标头列入白名单即可转发到原点 - 即使原点忽略它也是如此。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesForwardHeaders

然而......需要为您的API消费者提供绕过缓存的方法,这似乎是您的设计存在问题。使用自适应Cache-Control响应标头并在CloudFront中缓存响应一段适当的时间,此问题就会消失。

否则,通过不断改变该值,聪明的人将一直绕过它。

答案 1 :(得分:0)

CloudFront根据标题进行缓存。

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

希望它有所帮助。

修改

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html

基于标头的缓存。