如何判断 CloudFront 是否在缓存中存储了对象?

How can I tell if CloudFront has an object stored in cache?

我正在尝试动态清除 CloudFront 的某些对象缓存。我已经设置并运行了失效,但由于我只收到 1000 个免费失效请求,我想通过检查 CloudFront 是否完全缓存对象来避免不必要的请求。有没有办法通过 API 做到这一点?

没有 API 调用来检查 CloudFront 缓存的内容。 (实际上,缓存不止一次,因为对象可以缓存在 50 多个 CloudFront 边缘位置中的任何一个。)

另一种方法是修改您的 Web 应用程序以通过 缓存破坏 提供引用对象较新版本的内容。例如,将 ?version=1 附加到 URL。然后,要忽略该缓存对象并访问一个新对象,请使用 ?version=2。这将强制 CloudFront 再次检索该对象。 (虽然它没有使旧版本失效,但该版本会在一段时间后简单地超时。缓存中 存储 的数据不收费。)

使用该方法,您甚至不必使对象失效。但是,它会涉及您的网络应用程序中的代码更改。