先发制人地获取带有HTML5离线清单的页面或仅获取其数据 背景

先发制人地获取带有HTML5离线清单的页面或仅获取其数据 背景,html,offline,offlineapps,Html,Offline,Offlineapps,我有一个(美化的)CRUD应用程序,我希望能够支持HTML5离线支持。缓存清单系统看起来简单但功能强大,但我很好奇如何允许用户在脱机时访问数据 例如,假设我有实体“案例”的这些页面(即,这是CRM案例管理软件): 第一个URI包含所有案例的分页列表,使用查询字符串参数pageIndex和pageSize,例如/Case?pageIndex=2&pageSize=20 第二个URI是用于编辑单个案例的模板,例如/Case/1或/Case/56 最后,/Case/Create是用于创建案例的表单 问

我有一个(美化的)CRUD应用程序,我希望能够支持HTML5离线支持。缓存清单系统看起来简单但功能强大,但我很好奇如何允许用户在脱机时访问数据

例如,假设我有实体“案例”的这些页面(即,这是CRM案例管理软件):

第一个URI包含所有案例的分页列表,使用查询字符串参数
pageIndex
pageSize
,例如
/Case?pageIndex=2&pageSize=20

第二个URI是用于编辑单个案例的模板,例如
/Case/1
/Case/56

最后,
/Case/Create
是用于创建案例的表单

问题 我希望这三个都可以脱机使用

/案例 简单的方法是将
/Case
添加到缓存清单中,但是这会中断分页(因为链接不起作用)

我想我可以添加类似于
/Case/AllData
的内容,这是一个XML资源,它被缓存,如果脱机,那么
/Case
上的脚本将使用此XML数据填充列表并提供分页

如果我选择后者,如何将这些XML数据存储在浏览器中的SQL数据库中,而不是作为缓存资源?我认为使用SQL数据库会更有弹性

/Case/{id} 这更复杂。有一个简单的解决方案,可以手动添加
/Case/1
/Case/2
/Case/3
等。。。到
/Case/1234
,但可能有数百甚至数千个案例,因此这不是很实用

例如,我认为该系统应该提供对最近30起案件的访问。如上所述,如何将这些数据存储在数据库中

还有,这将如何工作?如果我没有显式地将
/Case/34
添加到清单中,并且用户单击
/Case/34
,我如何让浏览器加载一个页面,我的JavaScript将根据浏览器的SQL数据库数据填充该页面,而不显示脱机消息

/案例/创建 这一个更简单-因为它只是一个空页面,在
提交
操作中,我的脚本会检测它是否脱机,如果它脱机,它会将它添加到浏览器的SQL数据库中。这听起来可以吗


谢谢

我认为您需要考虑本地存储数据库(尽管它确实有一些缺点),但还有其他选择,如WebSQL和IndexedDB

另外,我不认为您应该使用数字Id,如果您允许人们创建,因为您将遇到主键冲突,那么最好使用GUID之类的东西

您需要的另一件事是能够将这些新案例推送到服务器上。可能有多个

它们可以编辑吗?如果可以,我认为你真的需要认真考虑同步和冲突解决,如果是这样的话

无耻的自我推销,我有一个项目,旨在处理这些问题,虽然没有完成,但已经接近尾声。你可以在网站上看到它(一个丑陋但功能强大的)演示

http://myapplication.com/Case
http://myapplication.com/Case/{id}
http://myapplication.com/Case/Create