离线应用程序可以称为离线 Web 应用程序,它是指当客户端与 Web 应用程序的服务器端没有建立连接时,也能够正常在客户端本地使用该 Web 应用程序进行操作。
一直以来,间断性的网络连接一直是网络计算系统致命的弱点,如果应用程序依赖于远程主机的通信,而这些主机又无法连接时,用户就无法正常使用应用程序了。不过当网络连接正常时, Web 应用程序可以保证及时更新,因为用户每次使用,应用程序都会从服务器更新加载数据。
伴随着新一代 HTML 标准 HTML 5 的出现, HTML 5 代表了现在 Web 领域的最新发展方向。在 HTML 5 标准中,加入了新的多样的内容描述标记,直接支持表单验证、视频音频元素、网页元素的拖曳、离线存储和工作线程等功能。
HTML 5 的其中一个新特性就是对离线应用开发的支持,在开发支持离线的 Web 应用程序时,开发者通常需要使用以下三个方面的功能。
需要一种方式来指明应用程序离线工作时所需的资源文件。这样,浏览器才能在在线状态时把这些文件缓存到本地。以后,当用户离线访问应用程序时,这些资源文件会自动加载,从而让用户正常使用。 HTML 5 中,通过 Cache Manifest 文件指明需要缓存的资源,并支持自动和手动两种缓存更新方式。
开发者需要知道浏览器是否在线,这样才能够针对在线或离线的状态,做出对应的处理。在 HTML5 中,提供了两种检测当前网络是否在线的方式。
离线时需要能够把数据存储到本地,以便在线时同步到服务器上。为了满足不同的存储需求, HTML 5 提供了 DOM Storage 和 Web SQL Database 两种存储机制。前者提供了易用的键 / 值对存储方式,而后者提供了基本的关系数据库存储功能。
离线应用程序存储文件或数据可以避免加载时所需的常规网络请求,如果缓存清单文件是最新的,浏览器就知道自己无须检查其它资源是否更新。目前,许多主流的浏览器都提供了 HTML 5 中离线的支持,除了 HTML 5 中所实现的离线,还有其它的方法(如使用 Gears )也能够实现离线。许多的 Web 应用程序也已经使用到了离线的功能。
一般情况下,使用浏览器缓存在用户磁盘上存储的 Web 单页,在用户再次浏览的时候已节省了带宽,但是即使这样也无法在没有 Internet 的情况下访问 Web 。为了让 Web 应用程序在离线状态时也能够被访问, HTML 5 通过 Application Cache API 提供了离线存储功能,其前提是需要访问的 Web 页面至少被在线访问过一次。
离线是指在没有网络的情况下访问 Web 应用程序,实际上是指访问已经下载的离线文件资源,并且使 Web 应用程序正常运行。离线应用缓存与浏览器缓存有着一定的区别,主要区别如下。
浏览器缓存主要包含两类:缓存协商和彻底缓存
彻底缓存( Cache-control , Expires )。通过 Expires 设置缓存失效时间,在失效之前不需要再跟服务器请求交互