当前位置: 首页 > 知识库问答 >
问题:

如何通过CloudFront缓存重定向并击中API网关?

沈骞仕
2023-03-14

我设置了一个CloudFront发行版,以便 <domain> /api 将我重定向到 / /api 。但是,我发现有时CloudFront会缓存响应以获取请求,而浏览器不会重定向到API网关endpoint并返回缓存的响应。

示例:/api/getnumber重定向到 / /api/getnumber 并返回我2。我更改响应,使其返回数字300,但当我通过浏览器发出请求时,现在没有重定向,我仍然返回数字2。x-cache响应标头表示cache命中来自CloudFront。

共有1个答案

陈季
2023-03-14

AWS CloudFront通常用于缓存,从而减少了访问后端资源的请求数量。因此,如果您想直接看到变化,就不应该在您的测试环境中使用CloudFront。

在您的例子中,您的endpoint似乎没有任何参数(path/query),因此CloudFront每次看到的基本上都是相同的请求,在这种情况下,您将自然地访问缓存。

您有几个选项来“修复”这个问题:

>

  • 使API请求多样化(例如使用参数)
  • 使用CloudFront的TTL选项,使CloudFront保留缓存对象的时间更短

    注意:如果是生产环境,这是不可取的,因为这可能会消除缓存的全部意义,并破坏预期的行为

    对于那些不带参数和/或响应经常更改的路径禁用CloudFront的缓存,从而对发行版的其余部分保持缓存:

    https://aws.amazon.com/premiumsupport/knowled-center/preventi-cloudfront-from-caching-files/

    最后,如果这只是您的测试环境,请禁用CloudFront,但上面的内容稍后可能适用于您的生产环境

  •  类似资料:
    • 我有一个每10分钟运行一次的cron作业,并更新内容类型和x-amz-meta。但从昨天开始,似乎在cron作业运行之后,亚马逊并没有恢复所做的更改(刷新他的缓存)。 我甚至手动进行了更改,但没有更改... 上载视频时,它有一个应用程序/x-mp4内容类型,cron作业将其更改为视频/mp4。 虽然S3的内容类型正确,但cloudfront显示的是应用程序/x-mp4(旧的内容类型)。。。。 cr

    • 我正在使用链接到S3桶的AWS云前线来托管静态(反应)网站。除了我将更改的文件上传到桶中之外,一切似乎都正常。我知道设计云前线会缓存文件,你必须使更改的文件无效,以便云前线尽快获取新的更改。然而,每当我浏览网站(在不同的设备上)时,我仍然会得到旧版本的文件。有时,我会看到网页的最新版本,但后来当我浏览到同一个页面时,它会得到旧版本(即使在清除缓存或隐姓埋名浏览之后)?!非常奇怪。 关于我的设置,我

    • 我正在使用Codeigniter在用户注销我的网站后重定向页面http://www.theindianclassified.com. 当用户转到网址http://www.theindianclassified.com/logout他被重定向到主页后,他被注销出系统。但是如果用户登录并且再次单击注销用户不是注销而是他被重定向到主页。我认为使用Codeigniter方法的重定向是由浏览器缓存的。 请帮

    • 响应标头: Cache-Control:private,max-age=3600 内容-长度:0 位置:/blog1/test 服务器:Microsoft-IIS/10.0 现状:301 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/61.0.3163.100 Safari

    • 是否可以通过CloudFront对API网关endpoint使用IAM角色身份验证? 下面是一个基本用例: null 选项:200 岗位:403 {“消息”:“我们计算的请求签名与您提供的签名不匹配。请检查您的AWS秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。\n\n此请求的规范字符串应为\n'POST\n/test/create\naccept:application/json\nco

    • 我已经使用MongoDB C#驱动程序以编程方式创建了一个新的文档集合。 现在,我想以编程方式创建和构建索引。我该怎么做呢?