Оптимальный способ создания URL-адресов для скачивания - PullRequest
0 голосов
/ 13 июля 2020

Я создаю приложение для карточек с интервалом повторения, используя react-native. Каждая флэшкарта содержит аудиофайл, который я храню в хранилище firebase. В хранилище Firebase хранится примерно 10000 аудиофайлов, но все они имеют схожую структуру имен (ie flashcard1.mp3, flashcard2.mp3, ...). Каждый раз, когда пользователь входит в приложение, у него будет около 50 карточек для просмотра и 20 новых карточек для просмотра. В настоящее время я собираю URL-адреса загрузки для каждой из 70 карточек внутри a для l oop со следующим кодом:

const audiourl = await storage()
            .ref('path/flashcard'+cardIndex+'.mp3')
            .getDownloadURL();
          console.log(audiourl);

Необходимость отправки запроса на сервер Google для каждого URL-адреса загрузки - это не оптимально. Один из вариантов, по-видимому, состоит в том, чтобы сохранить каждый из URL-адресов загрузки в базе данных firebase и просто вызвать его при загрузке приложения. Есть ли эффективный способ получить URL-адреса загрузки для каждого файла, не просматривая все это в цикле на передней панели?

Кроме того, можно ли просто загрузить из https://storage.cloud.google.com/firebaseappspot/path/flashcard1.mp3 ? Аудиоданные не содержат личной информации. Есть ли у вас другие предложения по хранению / получению URL-адресов аудио? Спасибо.

1 Ответ

0 голосов
/ 13 июля 2020

Есть ли эффективный способ получить URL-адреса загрузки для каждого файла, не просматривая все это в цикле на передней панели?

Нет ничего более эффективного, чем то, что вы делаете сейчас . Получение URL-адреса загрузки требует использования getDownloadURL, как сейчас, если вы хотите, чтобы у них был токен, который можно отозвать. Основная особенность этого URL-адреса загрузки заключается в том, что у них есть нераспознаваемый токен (поэтому они остаются закрытыми для всех, у кого есть URL-адрес), и токен может быть отозван в любое время позже. Единственный способ сгенерировать этот URL-адрес от клиента - использовать getDownloadURL.

Кроме того, можно ли просто загрузить с https://storage.cloud.google.com/firebaseappspot/path/flashcard1.mp3?

Это полностью зависит от вас и ваших требований безопасности. Если вы хотите, чтобы объекты были опубликованы c и доступны , пусть будет так.

...