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