2014-06-18 15 views
0

My website将cloudfront用于其图像。如果我在浏览器中加载网页,然后使用curl在该页面上请求图像,那么使用curl的请求是缓存未命中。后续使用curl的请求是缓存命中。为什么来自同一计算机缓存的具有不同客户端的两个请求会在云端丢失?

例如:两次运行此:

curl --verbose https://d1hvwudqvjuczb.cloudfront.net/assets/landing/splash_dickenko-2199af423f275d0784c1813cbaab5645.jpg` 

第一次,X-Cache将“从CloudFront的小姐”,这将是“从CloudFront的命中”的第二次。

因此,看起来cloudfront正在使用请求的某个方面来决定是否应该重新获取图像。

这个标准是什么?

+0

确保你真正看到你认为你所看到的,而且它的一贯重复。在一个地方,Cloudfront并不是一件单一的事情,所以不是每一个小姐都会被一击。它可以是饼干吗?打开Cloudfront中的日志记录。 –

+0

该域没有cookie。我看到的行为是可重复的。我会想象,因为CDN的目的是不必为相同地理区域的用户重新提取内容,所以我认为来自同一台计算机的2个请求不会导致重新获取绝大多数时间。 –

回答

2

您看到此行为的原因是因为您的请求不同。为了给您一些背景知识,请参阅http accept-encoding标头中的Cloudfront cache varys。在你的第一个例子中,在你的浏览器中,你正在发送gzip的值。以你的卷曲为例,默认情况下,你不是。因此Cloudfront将这个对象看作是独一无二的。

尝试在curl中传递--compressed标志并查看行为是否与您的浏览器匹配。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html#CompressedCustomOrigin

+0

你完全正确! –

相关问题