lastchancename:
Perhaps implement a RAM buffer that acts as a ‘window’ into the SD, and only update those ‘differences’ when you move. Although that could be tricky if the contents don’t always match the window size...
SD library already has and uses a buffer, default size 512 bytes. Why not use that unless you don't know it's there?