your ruin.“ - James Hetfield, Lars Ulrich The Struggle Within (The Black Album) LruCache shifting problem • Pages 1-12 are available, page 1 is shown • Removing data in page 1 – solution: shift data down • Load data from server and append at the end LruCache shifting problem • Pages 1-12 are available, page 1 is shown • Removing data in page 1 – solution: shift data down • Load data from server and append at the end • Computing pages to reload • Does LRU discard or keep existing pages • Backend Interaction • Asynchronous processes • Waiting for server response • User scrolls through data while request is active • Blocking input Fragmentation! LruCache-map may look like 1 2 3 11 12 21 22 23 24 ... Fragmentation! LruCache-map may look like 1 2 3 11 12 21 22 23 24 ... Improvements - after removing data, already buffered pages need to be purged once a new page loads 1 : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 [VISIBLE] 2 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 DEL Page 1, id 3 SCROLL Page 3 (Request Parameters: Start 21, Limit 10) 1 : 1, 2, [3], 4, 5, 6, 7, 8, 9, 10 2 : 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 3 : 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 [VISIBLE] -> Record 21 missing since data shifted in the backend *[n] = marked as deleted, i.e. visible in the UI, but n/a from backend