Chapter 18. Client-Side Data and Persistence
With desktop applications moving online like email and word processing, users have had to give up a lot to make the switch. For example, with a desktop email application, if users lose their Internet connection in the middle of composing a message, the email isn't lost. If they access email while on a plane they can still read and respond to messages if they don't mind syncing up once they get connected again. In a word processor, if the computer crashes or users run out of battery, their documents aren't lost. Chances are when they start things up again the program will ask them if they want to restore an auto-saved copy. Users have come to expect that sort of robustness from desktop applications but are a bit scared of what to expect in similar situations on the web.
There are actually a lot of reasons you might want to be thinking about incorporating some sort of offline storage capability in your applications:
Letting users work for uninterrupted periods on a single page or data set without needing to synchronize with the server or stay logged in
Providing some crash-recoverability in the event of sudden power loss or closed browser
Offering a way to "sandbox" an application or, in other words, letting users safely work with a data set for several days without needing to commit it to the database
Giving users a local repository for files natively in a web application
Now you probably begin to see the need for some sort of persistent storage ...