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.

4 Related Research ProjectsThis section presents research projects that <strong>in</strong> one way or another utilize recent client-sidestorage mechanisms. The focus is laid especially on two research projects,Sync Kit [5] and Silo [18], but other related research projects are also briefly covered.4.1 Sync KitSync Kit [5] is a client/server toolkit for improv<strong>in</strong>g the performance of data<strong>in</strong>tensivewebsites. Sync Kit uses JavaScript and (Google) Gears on the client side,mean<strong>in</strong>g the approach requires the <strong>in</strong>stallation of the Gears plug-<strong>in</strong> <strong>in</strong> order to work.Gears could be, however, replaced with a W3C-specified client-side storage mechanismto get rid of the requirement. On the server side, a Sync Kit aware web server isrequired. In their case, Sync Kit was implemented as a collection of scripts for theDjango 10 web framework.The idea beh<strong>in</strong>d Sync Kit is to use Gears to store (cache) web page templates onthe client side. Templates <strong>in</strong>clude a JavaScript library and data endpo<strong>in</strong>t def<strong>in</strong>itions toaccess dynamic contents resid<strong>in</strong>g on the server. Data endpo<strong>in</strong>ts, on the other hand,cache database objects to Gears and keep the cached data consistent with the backenddatabase. When a browser requests a web page for the first time, the template is returnedas a response and stored <strong>in</strong> the client-side storage. Then, new data is requestedvia template’s data endpo<strong>in</strong>ts. F<strong>in</strong>ally, the retrieved data is added to the template,cached on the client-side storage, and the result is displayed to the user.Accord<strong>in</strong>g to Benson et al. [5], their solution reduces server load by a factor offour and data transfer up to 5% compared to the traditional approach, when cache hitrates are high.4.2 SiloSilo [18] is a framework for deploy<strong>in</strong>g fast-load<strong>in</strong>g web applications. Silo usesJavaScript and <strong>Web</strong> <strong>Storage</strong> on the client side (both standard web technologies),mean<strong>in</strong>g the approach works on all modern web browsers. On the server side, a Siloawareweb server is required.The idea beh<strong>in</strong>d Silo is to use <strong>Web</strong> <strong>Storage</strong> to store (cache) website’s JavaScriptand CSS chunks (2 kB <strong>in</strong> size) on the client side. When a browser requests a webpage, the server returns a modified version of the web page conta<strong>in</strong><strong>in</strong>g a smallJavaScript shim with a list of required chunk ids. Next, the shim checks the client-sidestorage for available chunks and <strong>in</strong>forms the server of the miss<strong>in</strong>g chunks us<strong>in</strong>g theirids. Then, the server replies with the raw data for the miss<strong>in</strong>g chunks. F<strong>in</strong>ally, the webpage is reconstructed <strong>in</strong>to its orig<strong>in</strong>al form on the client us<strong>in</strong>g the JavaScript shim.Moreover, the second HTTP round trip can be completely elim<strong>in</strong>ated by utiliz<strong>in</strong>gHTTP cookies <strong>in</strong> the <strong>in</strong>itial HTTP request for send<strong>in</strong>g the already available chunk ids.10 Django, https://www.djangoproject.com/12

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

Saved successfully!

Ooh no, something went wrong!