Самый дубовый вариант вот этот
https://jsfiddle.net/vkorotenko/9p01m5bt/
Можно сделать вариант с "Виртуальным скурулом".
Суть в том что весь текст считается, но в окно видимое пользователю попадает только маленький кусочек. После выхода за окно видимости он удаляется. Соответственно все это вы обсчитываете на клиенте. И программируете ползунок прокрутки.