Хранение изображений на устройстве может несколько улучшить ситуацию, но это не сделает прокрутку по-настоящему плавной. Причина, по которой прокрутка имеет тенденцию к прерывистости, заключается в том, что синхронная функция в коде вашей ячейки означает, что вы блокируете цикл выполнения, что предотвращает анимацию. Если вы хотите ускорить прокрутку, вам нужно избавиться от события блокировки, сделав его асинхронным (хотя это все равно может привести к быстрой прокрутке, если асинхронные обратные вызовы занимают много времени ЦП), или отключить код блокировки основная нить.
Если вы переместите свои загрузки из основного потока, то либо отдельные файлы, либо база данных sqlite3 будут работать нормально. Другая большая проблема, которую вы обнаружите, заключается в том, что ячейки не обновляются при прокрутке. Это означает, что если вы выполняете асинхронную загрузку изображения в ответ на загрузку ячейки, изображение не будет отображаться в ячейке, пока пользователь не закончит прокрутку, что, как правило, нежелательно. Чтобы этого избежать, вам нужно заранее загружать изображения в оперативную память, прежде чем пользователь их прокрутит.