Быстрый запуск приложения. Статические запросы.
#разработка #опыт
Я уже писал о том, что пользователю важно давать пользоваться приложением настолько быстро, насколько это возможно. Но реалии таковы, что у нас куча всего, что нужно сделать на старте:
• инициализация библиотек;
• получение статических данных;
• проверка пользователя;
• инициализация базы и прочее.
Не так давно в одном из проектов нужно было ускорить первоначальный запуск приложения.
Для начала спросите: все ли, что я делаю на старте нужно на старте?
В моём случае выяснилось, что идет получение статических данных с сервера. Выполняется параллельно 6 запросов, ожидается получение всех этих данных и идет запись в БД. После исследования, выяснилось, что данные не так часто меняются на сервере, и стоит получать все только один раз, а в дальнейшем дописывать изменения с определенной даты. Также, интересно, что для работы приложения постоянно нужны данные только из 4 запросов. Поэтому, дописав методы получения этих данных по
Второй тип запросов, которые замедляли запуск были проверки. Например, жив ли токен пользователя, идет ли профилактика на сервере и подобные.
Принял решение убрать их со старта приложения и не дожидаться из полного завершения. Например, проверку токена пользователя я вынес после сплеш-скрина.
Сейчас на старте приложения остался один запрос. Статические данные для работы полностью загружаются на экране авторизации пользователя, в момент ввода логина и пароля. Дальше догружаются уже в основном экране, потому что изменения происходят не часто и догрузка не влияет на работу приложения.
Поэтому, если вам достался проект и он медленно открывается, то обратите внимание на то, какие запросы выполняются вначале. Вроде простые меры, которые игнорируются и забываются.
Дальше опишу еще меры, которые улучшили скорость запуска. Уже сделал часть из них, другие же только в списке задач. По мере их добавления я поделюсь опытом.
#разработка #опыт
Я уже писал о том, что пользователю важно давать пользоваться приложением настолько быстро, насколько это возможно. Но реалии таковы, что у нас куча всего, что нужно сделать на старте:
• инициализация библиотек;
• получение статических данных;
• проверка пользователя;
• инициализация базы и прочее.
Не так давно в одном из проектов нужно было ускорить первоначальный запуск приложения.
Для начала спросите: все ли, что я делаю на старте нужно на старте?
В моём случае выяснилось, что идет получение статических данных с сервера. Выполняется параллельно 6 запросов, ожидается получение всех этих данных и идет запись в БД. После исследования, выяснилось, что данные не так часто меняются на сервере, и стоит получать все только один раз, а в дальнейшем дописывать изменения с определенной даты. Также, интересно, что для работы приложения постоянно нужны данные только из 4 запросов. Поэтому, дописав методы получения этих данных по
timestamp
получилась достаточно хорошая экономия по скорости и трафику.Второй тип запросов, которые замедляли запуск были проверки. Например, жив ли токен пользователя, идет ли профилактика на сервере и подобные.
Принял решение убрать их со старта приложения и не дожидаться из полного завершения. Например, проверку токена пользователя я вынес после сплеш-скрина.
Сейчас на старте приложения остался один запрос. Статические данные для работы полностью загружаются на экране авторизации пользователя, в момент ввода логина и пароля. Дальше догружаются уже в основном экране, потому что изменения происходят не часто и догрузка не влияет на работу приложения.
Поэтому, если вам достался проект и он медленно открывается, то обратите внимание на то, какие запросы выполняются вначале. Вроде простые меры, которые игнорируются и забываются.
Дальше опишу еще меры, которые улучшили скорость запуска. Уже сделал часть из них, другие же только в списке задач. По мере их добавления я поделюсь опытом.