0

J'ai implémenté le code javascript pour télécharger des fichiers en plusieurs parties vers le stockage google cloud.Comment améliorer la vitesse de téléchargement des fichiers sur google storage?

est Ci-dessous le flux que j'exécute le fichier de téléchargement: 1. L'utilisateur sélectionne un fichier à télécharger en utilisant javascript application web client {demande est de la région Asie} 2. javascript demande d'application client à notre serveur d'applications mis en œuvre NodeJS { hébergé dans le moteur de calcul de Google cloud - région des États-Unis} pour permettre le téléchargement de fichiers {autorisation} 2. NodeJS serveur App retourne une signedurl à l'application cliente 3. application client démarrage du téléchargement du fichier à Google le stockage en plusieurs morceaux à l'aide qui a signé url 4. sur le téléchargement de rapports clients réussis vers le serveur d'applications

Je peux télécharger des fichiers en plusieurs blocs, bu t J'ai observé que le téléchargement est 2-3 fois plus lent si j'héberge serveur nodejs app dans google cloud région des États-Unis plutôt que d'hébergement sur la même machine d'où j'exécute demande d'application client

S'il vous plaît laissez-moi savoir si vous avez la solution comment améliorer les performances de téléchargement.

Il y a une solution de contournement mentionnée dans google cloud signed-url documentation.

ajouts réactivables sont épinglés dans la région où ils commencent à, par exemple, si vous créez une URL de téléchargement peut être repris aux États-Unis et le donner à un client en Asie, le téléchargement passe toujours par les États-Unis. L'exécution d'un téléchargement réutilisable dans une région où il n'a pas été démarré peut entraîner des téléchargements lents. Pour éviter cela, vous pouvez faire construire la requête POST initiale et signée par le serveur, puis donner l'URL signée au client afin que que le téléchargement soit initié à partir de leur emplacement. Une fois lancé, le client peut utiliser normalement l'URI de session résultant pour effectuer des demandes PUT qui n'ont pas besoin d'être signées.

Mais avec cette référence:

  1. Je ne pourrais pas trouvé tout échantillon de code pour: une fois que le client reçoit la signature URL du serveur comment l'appel API JSON initial peut être construit ??
  2. Quelle devrait être la réponse attendue dans le 1er appel? et comment extraire session URI
  3. comment utiliser l'URI de session pour télécharger d'autres blocs?

Répondre

1

Vous pouvez confondre deux fonctions GCS distinctes. GCS permet d'autoriser l'envoi de mises en ligne résumables à des tiers sans informations d'identification de deux manières. D'abord, et de préférence, sont les URL signées. Vous envoyez une URL signée à un client qui permettra à ce client de commencer un téléchargement pouvant être repris. Deuxièmement, et moins préféré en raison de la région d'épinglage mentionnée ci-dessus, le serveur lance lui-même un téléchargement pouvant être repris, puis transmet l'ID de téléchargement au client.

On dirait que vous voulez la première chose mais utilisez la seconde.

Utilisation d'URL signées nécessite de faire usage de l'API XML, qui gère les téléchargements réactivables d'une manière similaire à l'API JSON: https://cloud.google.com/storage/docs/xml-api/resumable-upload

Vous voulez signer ce premier appel POST pour créer un téléchargement et passer cette URL à l'utilisateur à invoquer par leurs propres moyens.