Web服务器最佳实践

时间:2015-05-14 11:29:31

标签: android sqlite rest web

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

  • blobs'二进制大对象'例如:图像,视频......
  • 和小数据(通常是项目的json / xml表示)。

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

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

但这项工作的关键是拥有一个非常快速的后端,其中包含许多功能以提高其速度,包括:

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

通常发生的事情是后端确保其数据始终通过以太网在每个特定时间查询数据库来加载到ram / cache中,或者每次在数据库中插入/删除/更新时都按下缓存。

Here is how Twitter is doing it

最后一个注意事项您的应用不需要花费更长时间与网页进行互动,本机应用程序花费的时间比网络应用程序更长,以允许用户与之交互它们。

答案 1 :(得分:1)

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

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

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