如何提高google存储文件的上传速度?

时间:2017-04-19 06:59:35

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

我已经实现了javascript代码,可以将多个文件上传到Google云端存储。

以下是我执行上传文件的流程: 1.用户使用javascript客户端网络应用程序选择要上传的文件{请求来自ASIA地区} 2. javascript客户端应用程序请求我们在NODEJS中实施的应用服务器{托管在谷歌云计算引擎 - 美国地区}以允许文件上传{authorization} 2. Nodejs App服务器将signedurl返回给客户端应用程序 3.客户端应用程序开始使用该签名网址将文件上传到多个块的谷歌存储 4.将成功的客户报告上传到app server

我能够以多个块上传文件,但是我发现如果我在google cloud US区域中托管nodejs应用服务器而不是托管在我执行的同一台机器上,上传速度会慢2-3倍客户端应用请求

如果您有解决方案如何改善上传效果,请与我们联系。

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

  

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

但有了这个参考:

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

1 个答案:

答案 0 :(得分:1)

您可能会混淆两个单独的GCS功能。 GCS允许在没有凭证的情况下向第三方授权可恢复上传。

首先,首选是签名网址。您向客户端发送签名URL,以允许该客户端开始可恢复上传。

其次,由于上面提到的区域固定而不太喜欢,让服务器启动可恢复的上传本身,然后将上传ID传递给客户端。

听起来你想要的第一件事却是使用第二件事。

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

您希望在第一次POST调用时签名以创建上传并将该URL传递给用户以自行调用。