我有一个动态生成电子商务网站图像的网络服务器,我在此服务器前设置了Amazon Cloudfront,以缓存图像请求,以减少我自己服务器的负载。
我发现在任何一天,图像(当天一次加载一次)都是从cloudfront提供的。 e.g:
问题是图像 正在重新生成(Cloudfront缺少我的图像,需要从我的服务器请求它)每天,cloudfront似乎忽略了我在我定义的'max_age'拥有自己的服务器并选择24小时的默认值。这是服务器“背后”云端的响应:
根据我发送的回复,云端是否有理由忽略我的“最大年龄”值?为了增加额外的激怒,它可以保留一些图像超过24小时,但不会超过几天。
答案 0 :(得分:1)
这可能是Amazon CloudFront关于对象过期的操作的工件,请参阅Specifying How Long Objects Stay in a CloudFront Edge Cache (Expiration):
通常,CloudFront从边缘位置提供对象,直到 对象到期。到期后,下一次边缘位置到达 对于该对象的最终用户请求,CloudFront将请求转发给 原始服务器验证缓存是否包含最新版本 对象:
如果CloudFront已有最新版本,则原点仅返回304状态代码(未修改)。
如果CloudFront没有最新版本,则原点返回200状态代码(OK)和最新版本的对象。
如果不经常请求边缘位置的对象, CloudFront可能会驱逐对象 - 删除对象之前的对象 到期日期 - 为更受欢迎的对象腾出空间。 [强调我的]
不经常的对象访问也可以解释为什么它可以保留一些图像超过24小时,但绝不会超过几天。这可以通过CloudFront Access Logs中缺少条目来证明,因此如果您不肯定经常请求这些文件,检查日志可以得出明确的答案。