我有一个应用程序具有非常短暂的 (5s) 访问令牌、偏执的客户端,并且他们的一些用户正在使用移动连接访问 S3 存储的文件,因此延迟可能非常高。
我注意到亚马逊强制发送Accept-Ranges
所有请求的标头,我想为有问题的文件禁用它。所以它总是会在第一次下载整个文件而不是下载它的块。
我注意到的主要问题是 Chromes 内置的 PDF 查看器。它将开始查看 PDF,得到 200 响应。然后它将使用 206 标头重新连接并开始分两块下载文件。如果 Chrome 太慢而无法在访问令牌过期之前开始下载所有块,它将继续向 S3 发送垃圾邮件请求(当我关闭窗口时,600 多个请求)。
我尝试通过在 S3 控制台中更改标题来设置标题,但是虽然它说它已成功保存它,但它会立即被清除。我还尝试使用签名请求设置标头,例如您可以这样做Content-Disposition
,但 S3 忽略了传入的标头。
或者有没有其他方法可以强制客户端一次下载整个文件?