2

我们刚刚发现 Cloudfront 的一个边缘站点正在为我们的一个 javascript 资产返回一个零字节文件。失效现在正在运行,但我开始认为这种现象可能是我们的客户几个月来一直在报告的广泛但奇怪的不可重现的错误的根源。

我们使用 Cloudfront 和自定义源(Nginx 从 EC2 服务器提供静态文件)。似乎每次部署到我们的应用程序都会引入新的资产名称(例如更改的文件版本),我们有一个或多个 Cloudfront 边缘位置获得 0 字节文件的非零机会。

  1. 有没有办法避免这种情况?
  2. 有没有办法检测到这一点?
  3. [sentiment redacted]
4

1 回答 1

3

AWS 论坛上讨论了一个非常相似的问题。它似乎归结为您的服务器没有发送带有您的自定义来源的 Content Length 标头。

请注意论坛的摘录,可能与此相关:

不幸的是,您的来源似乎没有提供 Content-Length 标头。如果没有 Content-Length 标头,CloudFront 无法确定已收到截断的对象并将其缓存。如果您的源可以发送 Content-Length 标头,则不会缓存任何截断的对象。有关详细信息,请参阅开发人员指南。

尝试添加 ContentLength 标头,这应该可以解决问题。

于 2013-08-08T14:52:29.643 回答