Advertisment

Going offline with Google Gears

author-image
CIOL Bureau
Updated On
New Update

BANGALORE, INDIA: In recent times, Web applications have replaced the job of various desktop applications. Office Document desktop applications for instance, are now available through online web applications. The reason these web applications are gaining an edge over desktop applications is that they have the same usability functions like desktop applications. Besides, web applications are available across any platform through a web browser. The implementation of AJAX tools gives the web applications a desktop like feel, but unlike desktop applications, web applications are available only when you are online.

Advertisment

Direct Hit!

Applies To: Web developers

USP:
Add offline browsing functionality to your website and Web apps

Primary Link:
http://gears.google.com/

Keywords:
Google Gears

Now suppose the kind of offline functionality that a desktop mail client like Thunderbird or Outlook provides, wherein even if you aren't connected to Internet, you can compose, view and delete mail messages, and when the Internet connection is restored, these messages are synchronized with the mail server. This kind of offline functionality can now be incorporated into online web applications as well, thanks to Google Gears.

What is Google Gears?

Google Gears was released at Google Developer Day 2007 as an open source set of JavaScript APIs that can be used to build offline web applications. Google Gears replaces the dreaded '404 Page Not Found' message with a local database and cache. The set of JavaScript APIs are used to enable offline functionality to the web application. Google Gears also comprises of an open source browser extension. This extension includes a SQLite database engine, a cache, and JavaScript library that allows the web application to make use of the local cache and database when the web application is offline. So a browser with Gears installed can cache for a Gears ready Web application's relevant pages and data, and lets you navigate through the web application even when you are offline.
Advertisment

The Google Gears toolkit consists of three independent elements, which are as follows.

LocalServer: This module acts like a local proxy server with a JavaScript API. It allows a Web application to cache and serve its local HTTP resources locally, even without a network connection.

Database: The Database module enables one to store and access data from within the browser. Gears uses the open source SQLite database engine for caching and storing web applications' data and pages.

Advertisment

WorkerPool: This module allows a web application to run JavaScript code in the background, without blocking the main page's script execution, i.e. asynchronously WorkerPool scripts work and make the whole application more responsive.

AJAX also provides asynchronous data-fetching from the server; but with Gears once the data-fetching has been done from the main server, the Web application can be unhooked from the Internet. This was not the case with the AJAX-based websites, where continuous network connectivity was required so that the web application does not face 'Page Not Found' error. (As shown diagrammatically)

Getting started with Gears

Google Gears is compatible with Firefox and IE web browsers, and by installing the Gears extension the browser can be enabled for offline functionality of the Web applications. The online page should provide the user with an option to go offline, and this is when the online page of the web application will cache the relevant data and store it locally. So, when you are not connected to Internet you can do all the operations on a page using the locally stored files. Later when you go online, the locally stored data will be synced with the main Web application server. Let's look into the intricate details involved to make an online web application function offline.

Advertisment

To begin with, we need to initialize the Web page with Google Gears by including the gears_init.js script file in the HTML document. To check if the browser has Gears extension installed, we look for the global google.gears object by the following script snippet:

With Gears once the page has been fetched locally, the network activity is not needed at all, however, the responsiveness of the application increases

if (!window.google || !google.gears) {

location.href = "http://gears.google.com/?action=install" +

"&message=&return=";

}

Advertisment

If the browser is not Gears installed, the script will redirect the browser to Google Gears' install page. You can append an optional message and return URL to the install page URL as query string parameters. Now to instantiate the LocalServer as the user goes offline, the page objects get downloaded and stored locally by the following script that uses google.gears.factory.create method.

localServer = google.gears.factory.create("beta.localserver");

store = localServer.createManagedStore("first_offline_web_app");

store.manifestUrl = manifest.json;

store.checkForUpdate();

When in offline mode, the LocalServer serves all the HTTP requests from the locally stored contents which are stored locally either in ResourceStore or in ManagedResourceStore. While the former is used to store the resources like images that aren't updated frequently, the latter is used to store a group of resources that might change frequently. Google Gears will automatically retrieve and update the local cache.

Advertisment

The contents of a ManagedResourceStore is defined by a manifest file, which we set in the third line of the code snippet. A manifest file is written in JavaScript Object Notation (JSON) format. It lists the URLs to be captured by a ManagedResourceStore and contains the versions for the file formats and contents, and also contains an optional redirection URL. For all the URLs listed under the manifest file, it's mandatory that they all follow the 'same-origin policy', meaning that all those URLs must originate from the same host.

An application can have multiple manifest files and ManagedResourceStores, but for each ManagedResourceStore one needs to specify which manifest file is to be used for it. The checkForUpdate method in the ManagedResourceStore will initiate the update task and return immediately. The Managed Store will capture the URLs specified in the manifest file. Then by setting the manifestUrl attribute of the ManagedStore we pass this manifest file to the store for retrieving objects.

Through LocalServer, this is how we can create local stores (caches). In next series we will analyze how to use the Database and WorkerPool attribute of the Gears to make a demo web application function offline.

Gears seems to be a solution that Web developers have been waiting for to make the Web applications work offline. It is simple to make a single page application with AJAX-based page components to work offline. But in a multi-page Web application this may become a tricky job of maintaining the locally stored caches and to include all the downloadable pages or data into the manifest files.

Gears being a lightweight extension having JavaScript APIs has the potential to change the client side interface and the way of working.

tech-news