【问题标题】:How to improve upload speed of files to google storage?如何提高文件上传到谷歌存储的速度?
【发布时间】:2017-09-15 06:21:07
【问题描述】:

我已经实现了 javascript 代码以将多个文件块上传到谷歌云存储。

以下是我执行上传文件的流程: 1. 用户使用 javascript 客户端网络应用程序选择要上传的文件{请求来自亚洲地区} 2. 在 NODEJS {hosted in google cloud's compute engine - US region} 中实现对我们应用服务器的 javascript 客户端应用请求,以允许文件上传 {授权} 2、Nodejs App服务器返回一个signedurl给客户端app 3. 客户端应用程序开始使用该签名的 url 将文件以多个块上传到谷歌存储 4.上传成功的客户端报告到应用服务器

我能够以多个块上传文件,但我观察到,如果我在谷歌云美国地区托管 nodejs 应用服务器而不是托管在我正在执行的同一台机器上,上传速度会慢 2-3 倍客户端应用请求

如果您有提高上传性能的解决方案,请告诉我。

google cloud signed-url documentation 中提到了一些解决方法:

可恢复上传被固定在它们开始的区域。例如, 如果您在美国创建可恢复的上传 URL 并将其提供给客户 在亚洲,上传仍然通过美国。执行可恢复 在未启动的区域上传可能会导致上传缓慢。 为避免这种情况,您可以构建初始 POST 请求并 由服务器签名,然后将签名的 URL 提供给客户端,以便 上传是从他们的位置开始的。一旦启动, 客户端可以正常使用生成的会话 URI 来发出 PUT 请求 不需要签名。

但是有了那个参考:

  1. 我找不到任何代码示例:一旦客户端收到签名 来自服务器的 url 如何构造初始 JSON API 调用??
  2. 在第一次通话中应该有什么反应?以及如何提取 会话 URI
  3. 如何使用会话 URI 上传更多块?

【问题讨论】:

    标签: javascript google-cloud-storage google-api-nodejs-client pre-signed-url


    【解决方案1】:

    您可能会混淆两个独立的 GCS 功能。 GCS 允许通过多种方式将可恢复的上传授权给第三方而无需凭据。

    首先也是首选的是签名 URL。您向客户端发送一个签名的 URL,该客户端将允许该客户端开始可恢复上传。

    第二个,由于您上面提到的区域固定,不太优选,是让服务器自己启动可恢复上传,然后将上传 ID 传递给客户端。

    听起来你想要第一个,但正在使用第二个。

    使用签名 URL 需要使用 XML API,它以类似于 JSON API 的方式处理可恢复上传:https://cloud.google.com/storage/docs/xml-api/resumable-upload

    您需要签署第一个 POST 调用以创建上传并将该 URL 传递给用户以自行调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-09
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多