微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html5 – 编写脱机工作的应用程序(Web应用程序)

编写脱机工作和在线工作时,最好将其编写一次以脱机工作,在线模式与脱机工作方式相同吗?

例如,让我们看看我们有一个典型的购物车示例.购物车包含物品和顾客.

加载购物车时,是否应该将所有项目客户缓存在本地存储中并在线上和线下使用该数据缓存并根据需要更新缓存?开发离线/在线混合Web应用程序时有哪些最佳实践?

解决方法

编写Web应用程序以在线/离线模式工作非常类似于编写任何“普通”服务器驱动的Web应用程序,除了您的应用程序和数据之间有数据访问层(DAL)生活在服务器上(在线模式)或浏览器的数据(离线模式).

根据应用程序及其需要,您可以运行以下两种模式之一:a.)缓存并尝试最佳模式或b.)加载一切和检查更新模式.

这两种模式中的每一种都有一些好的和一些不好的部分,你绝对可以让你的应用程序的不同部分倾向于这种方式.

缓存并尝试最佳模式

对于此模式,DAL将数据从服务器缓存到浏览器的数据存储中,因为它在正常操作过程中访问数据.一旦处于离线模式,DAL会尝试最好地满足用户的请求,但它只能使用缓存的数据,因此某些操作可能无法完成(或者至少不能立即完成).从好的方面来说,等待数据加载的启动时间很短,但是在不利的情况下,每个操作都需要服务器命中(如果连接)并且数据必须被缓存.对于因数据不完整而无法完成的任何操作,应用程序也必须正常失败.

加载所有内容并检查更新模式

在这种情况下,DAL会在应用启动时将应用所需的所有数据加载到浏览器中.如果已经加载了应用程序,则必须更新所有数据以确保缓存不是陈旧的.从好的方面来说,用户不必等待很长时间就可以做任何事情,因为一切都是本地操作,但在下方,如果有大量数据,启动时间可能是相当长.

在任何一种情况下,您都必须解决陈旧的缓存问题,并将问题留给服务器进行离线操作.这意味着在启动时,也可能是在应用程序运行时定期运行,您需要同步回服务器以保持缓存数据新鲜,并分享您可能与服务器的任何仅本地状态,以便世界其他地方看到该应用程序实例的更新.

当应用程序处于离线模式时,将操作保留回服务器可能会非常棘手,因为该操作涉及的数据会在应用程序更新之间发生变化.例如,如果缓存的银行余额过时并且表示比服务器反映的“真实”状态多得多,则用户可以在不知情的情况下透支帐户.这是一个极端的例子,但是需要采用这种操作冲突检测来处理可能相互碰撞的更新.

一般来说,如果你有一个可以在线和离线的应用程序,编写应用程序,以便应用程序本身不需要关心.较低级别的数据层抽象出所有问题,您的应用程序只需要知道如何处理无法获取所需的信息(任何好的应用程序,在线或离线应该这样做).

对于购物车,您可能(或希望?)拥有比任何个人客户可能放入购物车更多的产品.将所有这些加载到每个人的浏览器中几乎肯定会浪费大量带宽,并且会给用户带来这样的延迟,即大量的带宽成本和丢失的销售(由于响应时间慢)会很快导致任何业务陷入困境.根据需要将产品加载到浏览器数据中,如果您愿意,可以加载“其他用户也购买”的与购物车中实际商品相关联的其他产品.

原文地址:https://www.jb51.cc/html5/168478.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。