第10章 离线应用

要访问网站,得先上网。这一点连三岁小孩都知道。那为什么还要用一章来讲离线应用呢?离线应用的想法看起来太不合适时宜了。毕竟,Web应用已经超越几代离线桌面应用,成为了世界的潮流。很多事,比如实时掌握查理·辛的最新动态,或者订购一把办公椅,必须随时在线才有可能。不过别忘了,就算是Web应用也不可能永远不掉线。而在电脑短暂断网的情况下,它们应该能够正常工作。换句话说,离线Web应用可以应付间歇性的网络中断。

对于使用上网手机和平板的用户来说,离线应用尤其重要。为了把问题说明白,让我们看一个例子。假设你在使用一个Web应用的时候恰好通过一条隧道。一进隧道,你就看到了一个错误页面,之前做过的工作全部丢失。等出了隧道之后,你必须全部从头来过。但是,如果这个Web应用支持离线功能,那么你就不会有这种痛苦的经历了。虽然部分功能可能会暂时不能用,但你不会被迫退出。(当然,有些隧道可能会很长,而真正做得好的离线Web应用能保证乘三个小时飞机不间断,如果你需要,甚至到刚果旅行三个星期都没问题。说到底,就是离线多长时间都不应该出问题。)

本章介绍怎么把网页(或一组网页)转换成离线应用。此外,还会介绍如何获悉网站可用或者网站离线,以便作出相应处理。

什么时候考虑离线

该不该让我的网页支持离线浏览呢?

离线应用并不适合所有网页。比如,把查询股票报价的网页转换成离线应用毫无意义,因为这个页面存在的唯一价值就是能够连接Web服务器更新数据。不过,如果是一个股票分析页面,那么下载一批数据后,即使离线也可以生成图表或分析报告。这样,在能上网时把数据下载下来,即使进了隧道也不妨碍你更改选项或单击按钮。

离线功能也适合那些具有交互性和有状态的网页,也就是动用大量JavaScript代码在内存中维护很多信息的网页。这些网页本身就可以实现很多功能,因此支持离线就有意义。不过,其中某个网页突然丢掉连接的代价也更大。(想象一下,用户在执行一项复杂的任务时,突然中断任务怎能不让人觉得讨厌呢?)虽然包含简单内容的网页没多大必要做成离线的,但浏览器中的字处理工具显然需要离线支持。事实上,这样的离线应用恐怕恰恰能够取代功能更完善的桌面软件。

另外,还要考虑用户。如果有些用户不可能经常上网,或者可能会通过移动设备访问应用(比如为平板电脑设计的地图应用),那么支持离线功能就是必要的。如果情况并非如此,那么考虑离线只会自寻烦恼。