取消Google云端存储流会影响网络使用吗?

时间:2018-03-22 22:26:25

标签: javascript node.js express streaming google-cloud-storage

我正在为我的项目开发一个媒体服务器,用于提供流式音频文件。我已经设置了一个缓存系统,这样就不会对Google云端存储进行太多限制。

但我注意到Chrome发送了两个正确流式传输的请求,第一个请求开始流式传输整个文件,但Chrome忽略了这一点,因为服务器发送了Accept字节标头,并发送了另一个字节范围为{{1的请求这意味着再次流式传输整个文件。

直接从Google云端存储中传输流(未缓存时),但我担心这种行为可能会造成浪费,我想找到一种规避它的方法。

我尝试了以下内容:

  • 在第一个请求中,如果不存在字节范围标头,则只需发送空数据,不要启动流。这似乎在Chrome中有效,但是像Firefox这样的其他浏览器无法传输音频。

  • 如果没有字节范围标头,则在第一个请求中仅传输一小部分。这也无效,导致Chrome认为该流已损坏。我假设这是因为mp3标题。

目前处理请求的代码看起来像这样(从不相关的代码中提取):

0-

请注意,此后调用的中间件是发送流的内容。

有没有办法检测Chrome何时放弃第一个请求然后停止流,这是否会影响到Google云端存储的网络使用?

1 个答案:

答案 0 :(得分:2)

Google Cloud Storage only charges for network egress that was actually sent over the wire. If the client cancels a download and ends the TCP connection, the Cloud Storage server will detect that and stop sending bytes, so no additional network usage will be incurred.