0

我已经实现了JavaScript代码来将文件以多个块的形式上传到谷歌云存储。如何提高文件上传速度到谷歌存储?

下面是流量,我执行上载的文件: 1.用户选择文件使用JavaScript客户端web应用{请求是来自亚洲地区} 2. JavaScript的客户端应用程序请求到我们的应用程序服务器中的NodeJS {实现上传托管在谷云的计算引擎 - 美国地区}允许上传文件{authorization} 2. Nodejs应用服务器向客户端应用程序返回signedurl 3.客户端应用程序开始使用该签名的url以多个块向谷歌存储上传文件 4.上传成功的客户端报告到应用服务器

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

请让我知道您是否有解决方案如何提高上传性能。

有在google cloud signed-url documentation提到的一些解决方法:

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

但是与参考:

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

回答

1

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

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

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

这听起来像你想要的第一件事,但使用第二件事。

使用已签署的网址需要利用的XML API,它处理断点续传以类似的方式对JSON API的:https://cloud.google.com/storage/docs/xml-api/resumable-upload

您将要签署的第一个职位调用创建一个上传,并通过该用户可以自行调用该URL。

相关问题