在web应用中使用缓存的原因之一是为了支持离线应用。在全球互联的时代,离线应用仍有其实用价值。当无法上网的时候,你会做些什么呢?有人可能会说如今网络无处不在, 而且非常稳定,不存在没有网络的情况。但事实果真如此吗?下面这些问题,你考虑到了吗?
a我们乘坐的所有航班都有wi-fi吗?
b我们的移动网络设备的信号好吗(最后一次遇到无信号是什么时候)?
c我们去做讲演时,一定能够上网吗?
越来越多的应用移植到了web上,我们倾向于认为用户拥有24小时不间断的网络连接。但事实上,网络连接中断时有发生,例如在乘坐飞机的情况下,可预见的中断时间一次就可能达到好几个小时。
间断性的网络连接一直是网络计算系统致命的弱点。如果应用程序依赖于与远程主机的通信,而这些主机又无法连接时,用户就无法正常使用应用程序了。不过当网络连接正常时,web应用程序可以保证及时更新,因为用户每次使用,应用程序都会从远程位置更新加载相关数据。
如果应用程序只需要偶尔进行网络通信,那么只要在本地存储了应用资源,无论是否连接网络它都可用。随着完全依賴于浏览器的设备的出现,web应用程序在不稳定的网络状态下还能够持续工作就变得更加重要。在这方面,不需要持续连接网络的桌面应用程序历来被认为比web应用程序更有优势。
html5的缓存控制机制综合了web应用和桌面应用两者的优势:基于web技术构建的web应用程序,可在浏览器中运行并在线更新,也可在脱机情况下使用。然而,因为目前的web服务器不为脱机应用程序提供任何默认的缓存行为,所以要想使用这一新的离线应用功能,你必须在应用中明确声明。