Why not just use cookies?
Cookies have been the traditional solution for client-side storage in the past. Frameworks like PersistJS are becoming more popular, though, because there are several disadvantages to using cookies. For example, cookies are limited to 4 kilobytes in size. They are also sent along with every HTTP transaction, wasting bandwidth, and can be complex to create and update.What makes PersistJS better?
- It's very small (only 3k when gzipped)
- It has a consistent API, regardless of the browser being used
- It doesn't require browser plugins or other libraries
- It falls back to cookies if unsupported in the current browser
- It claims to support upcoming versions of IE, Firefox, and Safari
Usage examples
Saving data in a client-site store is as simple as:var store = new Persist.Store('My Data Store');Retrieval requires a callback, but is just as easy:
var data = "some arbitrary data of varying length";
store.set('saved_data', data);
store.get('saved_data', function(ok, val) {
if (ok) alert('saved data = ' + val);
});
Other client-side storage solutions
Dojo Storage and Google Gears also provide client-side storage. Relying on a browser plugin like this can be problematic though, because not everyone will have the plugin installed.
There are several other differences worth noting as well.
Dojo Storage
- Pro: better documented and has a larger user base
- Con: only supports Internet Explorer if the Flash plugin is installed
- Con: doesn't support WebKit-based browsers (like Safari)
- Con: requires other Dojo libraries to operate
Google Gears
- Pro: backed by Google and, as with Dojo, is better documented
- Con: is not yet widely deployed
- Con: won't operate if the plugin isn't installed
Aside from storage, Gears also supports client-side searching. MySpace made an announcement at the Google I/O conference in San Francisco this week that they are now using Gears for message searching. Up until now, users had to page through their messages to find what they were looking for. With the Gears solution in place, full-text searches are performed on the client side. Searches are also live, bringing back results as the user types in terms.
Note that PersistJS supports a number of different backends, including Gears. The advantage that PersistJS gives in this case is a consistent API that will remain the same if the backend is changed.