我们刚刚发现Cloudfront的一个边缘位置正在为我们的一个javascript资源返回一个零字节文件。失效现在正在运行,但我开始认为这种现象可能是我们的客户几个月来一直在报告的广泛但奇怪的不可重现的错误的来源。
我们正在使用带有自定义源的Cloudfront(Nginx提供来自EC2服务器的静态文件)。看起来每次部署到我们的应用程序都会引入新的资产名称(例如更改的文件版本),我们有一个或多个Cloudfront边缘位置获得0字节文件的非零概率。
[sentiment redacted]
答案 0 :(得分:2)
AWS forum上讨论过一个非常类似的问题。它似乎归结为您的服务器没有使用您的自定义源发送Content Length标头。
请注意论坛的摘录,可能与之相关:
不幸的是,您的来源似乎没有提供内容长度 头。如果没有Content-Length标头,CloudFront无法确定 收到截断的对象并将其缓存。如果你的出身 可以发送任何截断的对象不会发送的Content-Length头 缓存。有关详细信息,请参阅Developer Guide。
尝试添加ContentLength标头,这应该可以解决问题。