我有一个Cloud Front Distribution来缓存我的图像。我的原始服务器不是S3,而是我运行的某些服务器。
我在我的网站中使用这些图像(利用CF缓存的优势)。现在解释问题,让我们在我的主页中假设我使用的是名为banner.png
的图像。
我第一次访问我的主页时,说的是chrome-对于banner.png,它是缓存未命中的对象,因此它被从原处获取并缓存在CF中。
此后,我使用邮递员this all gets me the file from CF cache
从FF,opera,Chromium,GET“ banner.png”访问了我的页面。
现在我使用失眠(另一个休息客户)-Now CF doesn't send me from cache, it goes back to origin to get the image, and reply me with **"x-cache: RefreshHit from cloudfront"**
来获取“ banner.png”。
这两组客户端之间的区别是,第一组客户端在请求中发送“ Accept-Encoding:gzip” 标头,而第二个客户端未发送。
我的CF行为-
“基于所选请求标头的缓存” =无
自动对象” =“否”压缩
。
任何指针吗?
答案 0 :(得分:-1)
CloudFront基于接受编码保留两个不同的缓存副本。
如果标头包含接受编码,则为一个:gzip
接受编码:任何其他值或没有标题。
您可以使用curl进行测试,首先不使用accept-encoding,然后使用带有accept-encoding:gzip的第二个请求,您将看到CloudFront的MISS,这在CloudFront中是可以预期的。
原因是CloudFront仅支持gzip压缩,并且考虑了此标头以了解是否需要压缩响应。
但是,您的问题似乎有所不同,当CloudFront TTLs / Max-age到期并且CloudFront对源进行条件GET以确定内容是否被修改时,您会看到来自CloudFront的Refersh。 理想情况下,如果不存在接受标头,则应为CloudFront小姐。