16.4 存储结构化数据
前面我们看到,使用Storage保存key-value对时,key、value都只能是字符串,这对于简单数据来说已经足够了。但如果需要保存更复杂的数据,
比如保存类似于表记录的数据,因此可以结合前面介绍过的JSON知识。
我们可以考虑按如下步骤来存储结构化数据
把结构化数据封装成JSON对象。
把JSON对象转换为字符串后再进行保存。
读取数据时则可以按如下步骤进行。
读取JSON格式的字符串。
把JSON格式的字符串转换为JSON对象。
通过JSON对象的属性来提取数据。
16.2 离线应用
客户端存储通常需要与离线应用结合使用,最通用的应用方式可细分为:
当用户在线、能连接服务器时,直接把数据提交给服务器,直接与服务器交互。
当用户离线、不能连接服务器时,用户浏览、操作的是离线应用——这样即使用户没有网络也可以使用该Web应用,操作离线应用时所有的数据都通过本地存储保存用户数据。
当用户再次接入网络时,Web应用程序控制把本地存储中保存的数据提交给远程服务器。
离线应用可以在浏览器中缓存部分或全部页面,这样即使用户没有接入互联网,也同样可以操作这个离线应用。
16.2.1 离线应用于浏览器缓存的区别
在介绍离线应用之前,可能有些人会把离线应用于浏览器缓存混淆起来,因为浏览器缓存也可以对网页进行缓存。但事实上,离线应用与浏览器缓存有着本质的差异。
服务范围不同:离线应用控制对整个Web应用进行缓存。离线应用提供的是一种不在线的网站服务功能;而浏览器缓存则只是单纯地缓存网页。
可靠性不同:离线应用可以精确地控制浏览器需要缓存哪些资源,它是非常可靠的;但浏览器缓存则完全依靠浏览器行为,具有一定的不可靠性。
可控制性不同:离线应用可准确地控制缓存哪些资源,并可控制刷新缓存;但浏览器缓存则完全依赖于浏览器行为,程序无法控制缓存行为。