【问题标题】:client-server fetch large data客户端-服务器获取大数据
【发布时间】:2014-03-05 00:29:02
【问题描述】:

我有一个应用程序需要一个数据列表,但是这些数据可能非常大。如果我要在客户端(移动应用程序)中显示此数据列表,由于移动设备的空间限制,我无法从服务器获取所有数据。

例如,像 Facebook 应用程序,服务器中有大量的新闻源,用户只能看到其中的一部分。如果用户想看更多,他们需要向下滚动并保持新鲜。那么如何在客户端和服务器中实现这样的东西呢? (目前我的服务器是用ruby on rails写的,客户端是iOS)

一旦客户端获得这些数据,它是存储在内存中还是本地数据库中?我担心手机的内存限制。

谢谢

【问题讨论】:

  • 你不用担心内存,不是你使用的数据超过1000mbs。您从服务器获取一些 json 并将其保存在数据库中。因此,请继续使用核心数据,因为它对 UI 来说足够快且高效,因此可以减少您的后顾之忧。
  • 你在 uitableView 中显示你的数据还是什么??
  • 最好的方法是在滚动时加载数据。给我你的邮箱,我明天给你发一个例子
  • @poyofever。是的,我将在 uitableview 中显示数据。 bill.snowwolf@gmail.com。谢谢
  • 谢谢,明天下午我会把样品寄给你。

标签: ios ruby-on-rails client-server


【解决方案1】:

在服务器端,您可能会编写一个支持分页和自定义结果计数的 API,即:myapp.com/api/get?start=0&count=20 以获取前 20 个结果,当用户在 iPhone 上一直向下滚动您的视图时,获取下一项,例如:myapp.com/api/get?start=20&count=20

如果你计划好你的设计,你会得到一些非常灵活的东西,如果你意识到 20 个结果太多/不够等等,你可以在以后进行更改。

根据您应用的架构和您的应用将处理的数据量,您可能还需要根据上次更新时间提供 API 方法,以确保您不会丢失数据(例如,如果您调用第二个get?start=20 在第一个之后几分钟,start 索引可能具有不同的含义)。

至于在本地存储数据,这完全取决于您要实现的目标。您确定需要保存用户下载的所有内容吗?您可以仅将最近获取的项目存储在本地 SQLite 数据库中,并在下次启动应用程序时查询它们,然后刷新视图(我不知道它是如何在 Facebook 的 iPhone 应用程序中实现的,但至少看起来像这样做)。

【讨论】:

    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 2021-10-28
    • 2018-09-27
    • 2020-08-16
    • 2015-04-08
    • 1970-01-01
    • 2018-08-31
    • 2020-08-11
    相关资源
    最近更新 更多