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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    前端查询

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

    后端查询

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

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

    【讨论】:

    • 很好的解释。
    • 听到这个解释我很欣慰。谢谢!
    • @evita 如果对您有帮助,您能否将答案标记为正确?谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2021-12-07
    • 2020-03-15
    • 2018-02-03
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多