我应该在后端(Rails API)还是前端(React/Redux)上查询和过滤

Posted

技术标签:

【中文标题】我应该在后端(Rails API)还是前端(React/Redux)上查询和过滤【英文标题】:Should I query and filter on the back-end (Rails API) or front-end (React/Redux) 【发布时间】:2018-09-17 18:22:06 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

前端查询

? 查询不需要另外的网络请求 ? 网络请求较慢,因为要发送的数据更多 ? 应用必须在内存中存储更多数据 ? 查询不一定更有效,因为客户端必须进行过滤,而且它通常没有有效执行此操作的机制(缓存和索引)。

后端查询

? 发送给客户的数据更少 ? 如果数据库索引设置正确,查询速度会非常快 ? 应用更轻量级,只保存需要展示的数据 ? 每个查询都需要一个网络请求

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

【讨论】:

很好的解释。 听到这个解释我很欣慰。谢谢! @evita 如果对您有帮助,您能否将答案标记为正确?谢谢!

以上是关于我应该在后端(Rails API)还是前端(React/Redux)上查询和过滤的主要内容,如果未能解决你的问题,请参考以下文章

Magento API 上传的产品没有出现在前端 - 除非它们被重新保存在后端

除了 API 之外,我应该为前端/后端使用两个单独的项目还是将它们合并为一个? [关闭]

使用 Ruby on Rails 的 angular.js 中的安全性

在 Rails 应用程序中分离后端和前端服务器?

API 获取应该是前端还是后端? [关闭]

JSON 仅在后端和前端之间