为什么我的 CloudFront 分配返回“X-Cache: Miss from CloudFront”响应?

1 分钟阅读
0

我将 Amazon CloudFront 分配和源配置为缓存对象,但我的分配返回“X-Cache: Miss from CloudFront”响应。为什么会发生这种情况? 如何避免出现此响应?

解决方法

要诊断和排查“X-Cache:Miss from CloudFront”响应的原因,请查看以下内容:

哪个边缘站点正在接收请求?

通过 CloudFront 请求对象后,该对象仅缓存在接收请求的边缘站点。如果向其他边缘站点发出后续请求,则其他边缘站点将不会有该对象的缓存版本。此方案将返回“X-Cache:Miss from CloudFront”响应。

要确定响应是来自一个边缘站点还是多个边缘站点,请将来自同一客户端的多个请求发送到同一对象。然后,检查建立连接的 IP 地址。在 IP 地址上运行反向 DNS 查找以确定请求将到达哪个边缘站点。

您还可以在向 CloudFront 分配发出请求后,通过检查“x-amz-cf-pop”响应标头的值来确定节点位置。

请求对象的频率是多少?

如果边缘站点中的对象未经常请求,CloudFront 可能会在其到期日期之前删除该对象。有关 CloudFront 何时清理对象的详细信息,请参阅管理边缘缓存中的内容保留时间(过期时间)

如果您间歇性地看到“X-Cache:Miss from CloudFront”响应,CloudFront 可能会因为非经常性请求而删除该对象。

是否已将 CloudFront 分配配置为转发任何标头、cookie 或查询字符串参数?

如果已将您的分配配置为转发标头、cookie 或查询字符串参数,则分配会根据这些参数缓存请求。这些参数减少了从缓存提供的请求数。

例如,如果访问一个对象的两个请求在查询字符串参数中具有不同的值,则不会从缓存提供第二个请求。第二个请求返回“X-Cache:Miss from CloudFront”响应。

要确定转发标头、cookie 或查询字符串参数是否导致响应,请将 CloudFront 分配配置为不将这些参数转发到源。然后,检查问题是否仍然存在。

如果在分配不再转发这些参数后问题得到解决,则至少有一个参数导致响应。仅考虑将希望 CloudFront 转发到源的特定参数列入白名单,而不是将 CloudFront 配置为转发各种参数。

响应是否存储在浏览器缓存中?

在请求导致“X-Cache:Miss from CloudFront”响应后,浏览器可能会对后续请求提供相同的响应,因为它存储在浏览器缓存中。

要验证响应是否存储在浏览器缓存中,请清除浏览器缓存,并对同一对象发出新请求。

**注意:**要确定浏览器缓存对象的时间长度,请检查是否在对象上设置了任何Cache-Control 或 Expires 标头


AWS 官方
AWS 官方已更新 2 年前