Firebase Storage очень медленный по сравнению с Firebase Hosting

Кто-нибудь знает, почему хранилище firebase было бы смехотворно медленным по сравнению с хостингом firebase?

Результаты

  • Время скачать образ хостинга Firebase: 16ms
  • Время для загрузки того же изображения из хранилища Firebase: 2.23s (2.22s is TTFB)
  • Время для загрузки того же изображения из хранилища Firebase (Азиатско-Тихоокеанский регион): 1.72s (1.70s is TTFB)
  • (Размер файла: 22.7kb / jpeg / firebase - открыт для всех)

Это повторяется снова и снова в тестах. Есть ли способ ускорить это до приемлемого времени, или хранилище базы данных непригодно для небольших файлов (изображения / превью)?

Для сравнения

  • S3 North Cal - примерно 500ms
  • S3 Азиатско-Тихоокеанский регион - примерно 30ms
  • Облачный - примерно 20ms

Дополнительная информация:

  • Я живу в Австралии.
  • Точно такие же файлы. Всегда изображения под 100kb.
  • Замедление всегда происходит в TTFB в соответствии с инструментами разработчика.
  • Адрес хостинга: https: //.firebaseapp.com/images/thumb.jpg
  • URL-адрес хранилища: https://firebasestorage.googleapis.com/v0/b/.appspot.com / o / thumb.jpg? Alt=media&token=

3 ответа

Я нашел решение.

Если вы уже загрузили свои файлы в хранилище, перейдите по адресу: https://console.cloud.google.com/storage/browser?project=your_project > выберите свое ведро> выберите все интересные файлы и нажмите "Сделать общедоступными" (или что-то подобное - я я не англичанин).

Чтобы все новые загруженные файлы были общедоступными по умолчанию, вам нужно установить Google Cloud SDK ( https://cloud.google.com/sdk/docs/) и из командной строки использовать следующую команду для вашего сегмента:

gsutil defacl set public-read gs://your_bucket

После этого все мои текущие и новые изображения доступны здесь storage.googleapis.com/my_project.appspot.com/img/image_name.jpg, и время загрузки определенно сокращается.

Хостинг = Хранилище + CDN, так что на самом деле вы видите, что вы нажимаете CDN рядом с вами, а не идете прямо в корзину GCS или S3. То же самое относится и к Cloudinary/Imgix. Вот почему производительность для хостинга намного выше, чем для хранилища.

Решение проблемы отличия TTFB между AWS и GCP: к сожалению, это известная проблема GCS против S3 (см. Этот отличный пост в блоге с подробным анализом). Я знаю, что эта команда работает над решением этой проблемы, но использование маршрута "прикрепить CDN перед ним" обеспечит более быстрое решение (при условии, что вам не нужно ограничивать доступ, или ваша CDN может авторизовать запросы).

Примечание. GCP объявила, что в 2017 году будет запущен регион Сиднея ( объявление в блоге), что может вам помочь.

В дополнение к ответу @Ziwi. Я думаю, что также можно изменить правила непосредственно в Firebase.

      // Only a user can upload their profile picture, but anyone can view it
service firebase.storage {
  match /b/<bucket>/o {
    match /users/{userId}/profilePicture.png {
      allow read;
      allow write: if request.auth.uid == userId;
    }
  }
}

Источник https://firebase.googleblog.com/2016/07/5-tips-for-firebase-storage.html .

Другие вопросы по тегам