我配置了 CloudFront 分配和源用于缓存对象,但我的分配返回“X-Cache:Miss from CloudFront”响应。这是什么原因?我该如何避免这种响应?

要诊断和排查导致“X-Cache:Miss from CloudFront”响应的原因,请检查以下各项:

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

通过 Amazon CloudFront 发出对象请求后,对象仅缓存到接收该请求的边缘站点中。如果随后对另一个边缘站点发出请求,则此边缘站点不会有该对象的缓存版本,因此它会返回“X-Cache:Miss from CloudFront”响应。

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

请求对象的频率如何?

如果不经常请求边缘站点中的对象,CloudFront 可能会在该对象到期日期之前将其删除。有关 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 Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2018 年 4 月 10 日