Skip to content
DevMeme

DevMeme · Changelog

Pages load before you click them

Browsing memes is rapid-fire. Any wait after a click breaks the rhythm, so the waiting was moved to before the click.

The rule

Every eligible link on a page starts loading the instant it renders. Not when you hover it, not when it scrolls into view, not after a delay, and not at low priority. Immediately, at normal priority, on every page.

By the time you click, the page is usually already in your browser.

Several earlier versions of this were cleverer and all of them were worse. Waiting for the link to be visible, adding a small delay, or marking the requests low-priority each sounded polite and each meant the fetch lost the race to the images already loading. The polite version is the one that fails.

What is deliberately excluded

Not everything should be fetched speculatively:

  • /random, because loading it consumes the random meme it would have given you
  • your profile and saved memes, because they are private
  • communities and invites
  • images, media, and internal endpoints, which are not pages

Kept warm, not just fetched once

A page cached in your browser expires after five minutes. The dedupe list expires with it, so a tab you left open for an hour re-warms its links rather than quietly going cold. A visible tab re-checks every 60 seconds, and cards added by search or infinite scroll get the same treatment as ones the server rendered.

The whole site is pre-warmed on every deploy

Preloading only helps if the origin can answer. After every deploy the entire public corpus is requested and then verified: 24,319 pages at the last run, made up of meme pages, their mobile twins, deep-dive articles, and the category, tag and guide hubs. A page only counts as warm when a second request confirms it was served from cache. If too few verify, the deploy does not go live.

The visible part

Two things you can actually see. Meme card images now morph into the detail image rather than cutting, including cards drawn by search and paging. And a card you have pressed stays pressed: a queued grid update no longer steals the click out from under your finger.

Honest limits

“Every link” means every eligible same-origin page link, not media or private routes. Starting a request immediately is not a guarantee it finishes before a very fast click on a slow connection. It is a large reduction in waiting, not the abolition of it.

Commits

The changes described above, as they landed in the repository.

  • 46ee439
  • 30ecdcb
  • 3e4455c
  • c65b3a0
  • 59dde7f
  • 1f67726
  • c4a81f2
  • 63ee715

Real reader questions

Does this waste my mobile data?
It fetches pages you can see links to, which are small HTML documents, not images. Private pages, media, and your profile are deliberately excluded.
What are J and K?
On a desktop meme page, J opens the next meme and K the previous one. Both are already loaded before you press.