【问题标题】:AWS Cloudfront avoid caching particular querystringAWS Cloudfront 避免缓存特定的查询字符串
【发布时间】:2021-11-17 00:07:58
【问题描述】:

我有以下端点:

  • /订单
  • /orders?status=open
  • /orders?status=open&my_orders=true

第三个示例使用标题来确定用户并返回他们的特定项目。

显然,这是一个糟糕的 API 设计,但我们希望缓存前两个而不是第三个。缓存策略可以修改为白名单或排除查询字符串参数,但根据我的理解,这不会有帮助。如果我们包含用户特定的标头,那么前 2 个 URI 将全部被每个用户缓存。

我是否缺少一个选项,可以让我避免缓存第三个端点,同时仍然缓存前两个?另一种选择是缓存第 3 个,但在缓存键中包含用户特定的标头。

【问题讨论】:

    标签: caching amazon-cloudfront


    【解决方案1】:

    如果您从缓存策略中排除 my_orders 查询字符串,CloudFront 将不会将该值包含在缓存键中。这意味着其他条件相同,这两个 URI 路径将共享相同的缓存键:

    • /orders?status=open
    • /orders?status=open&my_orders=true

    这听起来不像您想要的 - 您确实希望将带有 my_orders=true 的请求视为单独的缓存键,但您还需要考虑特定的请求标头,其中该标头的值会更改缓存键.如果是这种情况,您需要将请求标头作为缓存键的一部分(这也将确保 CloudFront 将其传递到您的源)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2015-01-01
      • 2013-04-21
      • 2015-04-12
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多