This problem is already solved by virtualized lists available in any decent framework. Why people don't use it is beyond me.