11.07.2015 Views

Client-Side Storage in Web Applications

Client-Side Storage in Web Applications

Client-Side Storage in Web Applications

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

When compared to cookies, <strong>Web</strong> <strong>Storage</strong> offers several advantages: (1) more storagespace (5 MB per orig<strong>in</strong>); (2) data is stored on the client side, i.e., no need to senddata back and forth over the Internet with every web request; (3) better and more secureJavaScript API (same orig<strong>in</strong> policy); (4) the same web application can be run <strong>in</strong>multiple web browser tabs simultaneously; (5) no need to set an expiration date; and(6) better performance.Currently, <strong>Web</strong> <strong>Storage</strong> has the best browser support out of the three different APIproposals by the W3C. The API is supported (either fully or partially) <strong>in</strong> every majorbrowser, <strong>in</strong>clud<strong>in</strong>g mobile browsers. Table 2 lists m<strong>in</strong>imum versions needed for eachbrowser [16, 22].Table 2. Browser support for <strong>Web</strong> <strong>Storage</strong>.Chrome Firefox IE Opera Safari Android iOS Safari4.0+ 3.5+ 8.0+ 10.5+ 4.0+ 2.1+ 3.2+3.2 <strong>Web</strong> SQL DatabaseAs the name implies, <strong>Web</strong> SQL Database 5 [10] enables stor<strong>in</strong>g and manag<strong>in</strong>g persistent(long-lived) relational data <strong>in</strong> client-side relational databases through the use ofJavaScript APIs and a variant of SQL. For developers already familiar with serversiderelational databases and SQL statements, the use of <strong>Web</strong> SQL Database mayseem like a logical choice. The biggest difference between client-side and server-siderelational databases is that <strong>in</strong> client-side databases the storage space is rather limited(defaults to 5 MB per orig<strong>in</strong>).<strong>Web</strong> SQL Database has several benefits over <strong>Web</strong> <strong>Storage</strong>: (1) more complex datatypes, (2) more complex queries (e.g., jo<strong>in</strong>s), (3) support for transactions and callbacks,and (4) both synchronous and asynchronous database APIs. It even supportsprepared statements to prevent SQL <strong>in</strong>jections. All this, however, comes with theexpense of a more complex API.List<strong>in</strong>g 2 gives an example of how to use the APIs. First, variables and data are def<strong>in</strong>ed(cf. l<strong>in</strong>es 1-8). Next, a database is created/opened (cf. l<strong>in</strong>es 10-12). Then, with<strong>in</strong>a s<strong>in</strong>gle transaction a table is created and <strong>in</strong>itial data (<strong>in</strong>cl. JSON as str<strong>in</strong>g) is stored <strong>in</strong>the database (cf. l<strong>in</strong>es 14-23). F<strong>in</strong>ally, the data is retrieved from the database and convertedback to JSON (cf. l<strong>in</strong>es 25-33). As can be seen, the amount of code is muchlarger and complex compared to <strong>Web</strong> <strong>Storage</strong>, but it comes with an added flexibility.1: // Def<strong>in</strong>e variables2: var myDatabase = null;3: var version = "1";4: // Def<strong>in</strong>e data5 Also referred to as <strong>Web</strong>DB.6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!