AWS Cloudfront 避免缓存特定查询字符串

AWS Cloudfront avoid caching particular querystring

我有以下端点:

第三个示例使用 headers 来确定用户和 return 他们的特定项目。

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

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

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

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

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