gpt4 book ai didi

javascript - 如何提高文件上传到谷歌存储的速度?

转载 作者:行者123 更新时间:2023-12-03 04:30:52 26 4
gpt4 key购买 nike

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

下面是我执行上传文件的流程:1. 用户使用 javascript 客户端 Web 应用程序选择要上传的文件{请求来自亚洲地区}2. javascript 客户端应用程序向我们在 NODEJS 中实现的应用程序服务器发出请求{托管在谷歌云的计算引擎 - 美国地区}以允许文件上传{授权}2. Nodejs应用程序服务器向客户端应用程序返回一个签名的url3. 客户端应用程序开始使用该签名的 url 将文件分块上传到 Google 存储4. 将成功的客户端报告上传到应用服务器

我能够以多个 block 上传文件,但我发现,如果我在 Google Cloud 美国区域托管 Nodejs 应用程序服务器,而不是在我执行的同一台计算机上托管,则上传速度会慢 2-3 倍客户端应用请求

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

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

Resumable uploads are pinned in the region they start in. For example, if you create a resumable upload URL in the US and give it to a client in Asia, the upload still goes through the US. Performing a resumable upload in a region where it wasn't initiated can cause slow uploads. To avoid this, you can have the initial POST request constructed and signed by the server, but then give the signed URL to the client so that the upload is initiated from their location. Once initiated, the client can use the resulting session URI normally to make PUT requests that do not need to be signed.

但有了这个引用:

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

最佳答案

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

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

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

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

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

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

关于javascript - 如何提高文件上传到谷歌存储的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43488639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com