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。

相關問題