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

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

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

解决方法

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

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

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

缓存并尝试最佳模式

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

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

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

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

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

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

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

html5 – 编写脱机工作的应用程序(Web应用程序)的更多相关文章

  1. 使用HTML5做的导航条详细步骤

    这篇文章主要介绍了用HTML5做的导航条详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 详解HTML5中的picture元素响应式处理图片

    这篇文章主要介绍了详解HTML5中的picture元素响应式处理图片,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. html5利用canvas实现颜色容差抠图功能

    这篇文章主要介绍了html5利用canvas实现颜色容差抠图功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  4. HTML5拖拽功能实现的拼图游戏

    本文通过实例代码给大家介绍了HTML5拖拽功能实现的拼图游戏,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

  5. HTML5实现直播间评论滚动效果的代码

    这篇文章主要介绍了HTML5实现直播间评论滚动效果的代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. 详解使用双缓存解决Canvas clearRect引起的闪屏问题

    这篇文章主要介绍了详解使用双缓存解决Canvas clearRect引起的闪屏问题的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. 使用Html5多媒体实现微信语音功能

    这篇文章主要介绍了使用Html5多媒体实现微信语音功能,需要的朋友可以参考下

  8. HTML5 播放 RTSP 视频的实例代码

    目前大多数网络摄像头都是通过 RTSP 协议传输视频流的,但是 HTML 并不标准支持 RTSP 流。本文重点给大家介绍HTML5 播放 RTSP 视频的实例代码,需要的朋友参考下吧

  9. html5 拖拽及用 js 实现拖拽功能的示例代码

    这篇文章主要介绍了html5 拖拽及用 js 实现拖拽,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  10. HTML5自定义视频播放器源码

    这篇文章主要介绍了HTML5自定义视频播放器源码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

随机推荐

  1. 微信小程序canvas实现水平、垂直居中效果

    这篇文章主要介绍了小程序中canvas实现水平、垂直居中效果,本文图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 使用HTML5做的导航条详细步骤

    这篇文章主要介绍了用HTML5做的导航条详细步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. H5最强接口之canvas实现动态图形功能

    这篇文章主要介绍了H5最强接口之canvas实现动态图形功能,需要的朋友可以参考下

  4. Canvas高级路径操作之拖拽对象的实现

    这篇文章主要介绍了Canvas高级路径操作之拖拽对象的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. html5视频自动横过来自适应页面且点击播放功能的实现

    这篇文章主要介绍了h5视频自动横过来自适应页面且点击播放,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  6. 详解HTML5中的picture元素响应式处理图片

    这篇文章主要介绍了详解HTML5中的picture元素响应式处理图片,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. canvas像素点操作之视频绿幕抠图

    这篇文章主要介绍了canvas像素点操作之视频绿幕抠图的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. html5利用canvas实现颜色容差抠图功能

    这篇文章主要介绍了html5利用canvas实现颜色容差抠图功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  9. canvas绘制视频封面的方法

    这篇文章主要介绍了canvas绘制视频封面的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. HTML5拖拽功能实现的拼图游戏

    本文通过实例代码给大家介绍了HTML5拖拽功能实现的拼图游戏,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

返回
顶部