【发布时间】:2015-10-11 16:45:50
【问题描述】:
自从被要求为某人开发网络应用程序以来,我一直在考虑整个项目。前端需要的主要内容之一是离线操作的能力。起初,离线维护应用程序似乎很容易:
- 可以将数据库中的重要信息复制到 indexedDB 中。
- 存储 API 可用于存储信息花絮。
- 应用程序缓存可以处理离线存储资产。
我的想法似乎很可靠,直到我做了一些研究。应用程序缓存已被弃用。显然,它有一些问题,并没有我想象的那么好。现在似乎几乎不可能构建离线应用程序。通过研究和思考,我考虑了一些解决方案,但它们都存在某种缺陷。
我读过的一篇文章考虑使用 localStorage 来存储资产。我猜这似乎没问题,因为应用程序将是单页的,但是 CSS、JavaScript 库和图像等资产会很大,虽然我可以压缩它们,但将它们作为字符串存储在 localStorage 中似乎有点难。
MDN 将我指向Service workers。这些看起来不错,但也过于复杂,而且它们的浏览器支持对我不起作用。
我考虑使用 File API 而不是 localStorage 来处理资产。问题是文件 API 似乎只适用于用户交互,例如文件上传或拖放,这不是我需要的。我只需要在幕后使用 JavaScript 写入文件。但是,即使这样,我也预计性能会受到影响,尤其是对于使用较慢磁盘的用户。
从我的解决方案中可以看出,主要因素之一是速度。我想这样的过程可以使用 WebWorkers 与主应用程序隔离,但即便如此,将文件存储在 localStorage 中的感觉也不是很好。
我不相信这些解决方案中的任何一个都是可行的,但我不能太确定。我应该如何为离线应用程序存储资产?理想情况下,我想要移动支持,但到目前为止,我正在寻找一种解决方案:
- 不会严重降低性能
和
- 语义上看起来不错,没有使用任何黑客或不良做法。
我有哪些可用的解决方案?我的上述任何解决方案都不错吗?
【问题讨论】:
-
看看pouchDb(客户端),它会自动与couchDb(服务器)同步
标签: javascript html web-applications offline