nocode
October 18, 2022

Производительность приложений на Bubble. Заметки. Часть 3. Ограничения Bubble.

Данная серия статей — это мои заметки по книге The Ultimate Guide to Bubble Performance. Тут изложено только то, что фиксировал я, т.к. посчитал это важным.ф

Обработка большого объёма данных.

Bubble не оптимизирован для работы с большими объемами данных, которые превышают тысячу записей. Это не значит, что Bubble не может с ними работать. Может.

Однако если приложению нужно обрабатывать часто и быстро тысячи записей, то Bubble может показаться медленным.

Лучший способ обрабатывать данные в Bubble — делать это с помощью циклов (рекурсивно).

Представим, что нужно тысяче пользователей поменять аватарку. Для этого нужно создать цикл на бэкенде, который:

→ Получает пользователя, которому нужно поменять аву

→ Меняет Аву

→ Завершает работу

То есть мы одновременно будет обрабатывать только 1 пользователя, а не сразу тысячу.

Вывод большого количества записей в Repeating Group (RG)

Выводить 50-100 записей в РГ не проблема. А вот если выводить 200, 300, 500 и т.д браузер может начать тормозить. Пишу "может", потому что зависит от того, какие данные выводим. Если это сотни строчек текста, браузер может еще потерпеть, а вот если мы сделаем вывод 1 тысячи картинок, то это может сильно нагрузить браузер.

Нужно понимать, что Bubble - это не гугл-таблицы, которые предназначены для работы с большим количеством данных одновременно.

Множественный поиск.

Поиск по одному параметру в Bubble работает быстро. Тормоза начинаются, когда пытаемся делать поиск по нескольким параметрам.

Например, нам нужно найти всех пользователей с именем Витя — такой поиск сработает быстро. Если же мы будем искать пользователей с именем Витя, родившихся с 1990 по 2000 год и зарегистрировавшихся в приложении до 10 декабря 2020 года, то такой поиск будет работать медленнее, т.к. мы ищем по нескольким параметрам.

А если мы делаем поиск, который частично выполняется на стороне Bubble и частично на стороне клиента, то это еще сильнее увеличит нагрузку.

Давайте разберем на примере из прошлого поста: Search for Users:filtered
Сам поиск пользователей выполняется на серверах Bubble, однако фильтрация происходит на стороне клиента. Подобный подход может вызвать тормоза, если нам нужно обработать большой объем данных. Однако этот же подход, может использоваться для ускорения работы приложения. Но об этом позже.

Сейчас вам нужно запомнить, что чем сложнее поиск делаем, тем дольше он выполняется.

Серверный JavaScript

Не так давно в Bubble добавили возможность работать с JS на серверной стороне и эта функция до сих пор плохо оптимизирована и работает с сильными задержками.

Даже простые вычисления могут привести к задержкам до нескольких секунд.

Я сам ни разу не пробовал работать с JS на серверной стороне.
Если вы пробовали, напишите в комменты:
1. Для какой задачи реализовывали
2. Как быстро работал ваш JS

Загрузка элементов страницы

Условие Page loaded (entire) работает некорректно.

Что это значит?

У нас могут загрузиться данные, которые используются на странице, но при этом какие-то визуальные элементы (кнопки, например) могут ещё не загрузиться, хотя условие вернёт нам ответ "страница загружена", что неправильно.

Насколько мне известно, Bubble уже тестирует функционал с полной загрузкой страницы. Возможно, в ближайших обновлениях увидим работоспособную версию условия Page is loaded.

Если статья принесла для вас полезную информацию, поставьте огонёк 🔥 ниже.

→ Подписывайтесь на мой канал в Телеграме Иван Некодит.

В канале рассказываю про:

  • Путь разработчика
  • Разработку на Nocode-инструментах.