I made some edits to this post after some feedback from Dru Knox, a Chrome PM. I’ve marked them with “Edit:“, so please be sure to note those changes!
I’ve been interested in client-side storage for a few years now. (And in fact, last year I wrote a book on it as well.) When I first began to dig into the topic, my focus was on the various APIs themselves. In other words, what were the mechanics of actually storing
and retrieving data. What I found is that we had multiple options, some easier than others, but in general, it was pretty cool to have a way
to store data on the client for both performance and offline support.
However… where things began to fall apart, and rather quickly, was on the higher level concept of how this storage was managed on the device itself. Specifically, how
do you know your data will actually persist when you store it and what will the browser do when, and if, it determines you’ve stored too much. I played around with this
a bit last year: