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

上次更新时间:2019-04-03

我将 CloudFront 分配和源配置为缓存对象,但我的分配返回“X-Cache: Miss from CloudFront”响应。这是什么原因造成的? 如何避免出现此响应?

解决方法

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

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

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

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

请求对象的频率是多少?

如果边缘站点中的对象未经常请求,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 标头


这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?