【问题标题】:Web server best practicesWeb 服务器最佳实践
【发布时间】:2015-07-26 00:07:58
【问题描述】:

我需要关于设计决策的建议。 我正在创建一个电子商务应用程序,并且有很多项目 (>10000) 可以在我的应用程序中显示。现在这是我有的 2 个选项 1)从服务器获取所有项目信息并保存在本地数据库中并每次同步信息(假设15分钟) 2)每次从网络服务器获取信息(通过rest api)。

这两种方法各有利弊。使用本地数据库我可以获得快速的结果和更少的服务器带宽,但必须处理同步 使用第二种方法,我将收到大量服务器请求,并在服务器上释放和加载。

我也想知道亚马逊和 Flipkart 等其他应用如何处理这个问题。他们是否每次都保存在本地数据库或请求服务器中。

【问题讨论】:

    标签: android sqlite rest web


    【解决方案1】:

    您应该寻找的是本地和远程之间的混合设计。

    就数据类型而言,主要有两种类型:

    • blob“二进制大对象”例如:图像、视频...
    • 和小数据(通常是项目的 json/xml 表示形式)。

    亚马逊和其他网络应用程序在每次加载应用程序时都会提供新数据,同时保留数据的本地副本以防应用程序离线,或者有时甚至在等待后端时在下次加载时使用该数据.

    另一方面,这些应用为大数据维护一个缓存级别,这样他们就不必多次加载它。

    但要做到这一点,关键是要有一个非常快速的后端,其中包含许多提高速度的功能,包括:

    • 允许用户与周围最近的服务器通信的云前端。
    • memcached 或任何其他缓存技术,可以将有关项目的信息保存在服务器的 RAM 中,而无需查询数据库来获取它们。

    通常发生的情况是,后端通过每次特定时间查询数据库或每次数据库发生插入/删除/更新时推送到缓存来确保其数据始终加载到内存/缓存中。

    Here is how Twitter is doing it

    最后一点您的应用不应该比网页花费更长的时间与网页进行交互,原生应用比网络应用花费更长的时间来允许用户与其交互是不可接受的。

    【讨论】:

      【解决方案2】:

      只加载您想要显示的内容,但会智能缓存。

      例如;一个产品的图片不会经常变化,但是一个非常受欢迎的项目的可用项目数量可能每秒都在变化。根据具体情况决定刷新哪些信息以及何时刷新。

      肯定不想在每次有人启动应用程序时从您的服务器上下载所有内容。这不会导致较低的带宽。它会融化你的服务器,吃掉他们的数据计划,并用他们永远看不到的产品填充他们的手机存储空间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-07
        • 2011-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-02
        相关资源
        最近更新 更多