我应该查询和过滤后端(Rails API)或前端(React / Redux)

时间:2018-04-08 04:52:42

标签: ruby-on-rails reactjs redux api-design

我有一个应用程序,允许用户对30,000项数据进行排序和筛选。现在我将Redux操作的获取请求发送到我的rails API,查询由我的rails端的范围方法处理。我的导师建议我将所有查询都移到我的前端以提高效率,但我想知道管理一个包含30,000个对象的Redux状态对象是否真的会更高效,每个对象都有50个自己的属性。

(还有一些额外的注意事项:现在我只在本地运行应用程序而且我正在进行分页服务器端,所以它运行速度很快,但是当我在像Heroku这样的地方启动它时我有点紧张另外,我知道如果我将查询移到前端,我会有更多的选项来使用react-router在URL中保存查询状态,但是我已经用现有的方式解决了这个问题。设置。)

1 个答案:

答案 0 :(得分:8)

让我们看看每种方法的优缺点:

在前端查询

  • (+)查询不需要其他网络请求
  • ( - )网络请求较慢,因为有更多数据要发送
  • ( - )App必须在内存中存储更多数据
  • ( - )查询不一定更有效,因为客户端必须进行过滤,而且通常没有有效的机制(缓存和索引)。

查询后端

  • (+)发送给客户的数据较少
  • (+)如果数据库索引设置正确,查询可能会非常快
  • (+)App更轻量级,只保存显示所需的数据
  • ( - )每个查询都需要网络请求

查询后端的优势远远超过前端的优势。我不得不反对你的导师的意见。想象一下,如果您想在Google上搜索某些内容,Google会将您想要的所有相关结果发送到您的浏览器,并在浏览器中进行分页和排序,您的浏览器会感觉非常迟钝。通过适当的缓存并为数据添加数据库索引,网络请求不会是一个巨大的劣势。