The issue is that scroll anchoring is being applied in an undesirable way during page-load. We have another very similar issue in bug 1524281. Comment 6 is relevant.
Loosely, it looks like the order of events for this page are:
- We load the HTML for the page
- We initiate async loads for the images
- The page has layout run (unsure why so far)
a. This causes us to restore our scroll position from history
b. Restoring a scroll position causes us to choose a scroll anchor which will be one of the div's
- The async loads for the images finish
- We run layout again
a. The images now take up space and push down the content we are anchored to
b. We apply scroll anchoring and scroll down
The step to clear the cache just forces us to always async load the images.
There are some questions here still. Like why we run the layout in step (3). Chrome doesn't seem to have this issue, but I haven't had a chance to read their code enough to understand why. This behavior is under-specified.
I'm not sure how complicated the fix would be. It might involve finding a scope during loading that we can disable scroll anchoring, or it might involve something more fundamental to the scroll anchoring spec.
I'd like to take a holistic look at these interop issues sometime soon, but have been busy with fission work.