【问题标题】:Large dataset from server to clients browser从服务器到客户端浏览器的大型数据集
【发布时间】:2019-10-05 02:48:45
【问题描述】:

这个想法是关于从 MySQL 查询的大数据集并将其发送给许多客户端。其次,在将这个日期提供给客户端并在浏览器中呈现之后,人们可以编辑所有这些行的价格,并且取决于价格,列表中的位置会发生变化。因此,如果客户 1 更新价格,所有客户都应该得到这个价格,并且所有客户的位置应该同时改变。所以我需要为我拥有的每个客户重建 UI。

所以实际上,此时此刻,我正试图了解我应该从什么开始。首先我认为,使用客户端浏览器的本地存储,但它有 5MB 的限制。

另外,我知道我无法通过 Web 套接字从 db 发送超过 50k 行,因为 Web 套接字是为短消息和快速消息构建的,而不是为大数据构建的。所以帮我解决我的问题,我应该使用什么以及我应该学习什么来快速、实时地将数据从数据库更新到浏览器? 我认为,我需要将所有日期保存在客户端某处,然后在更新后,只获取已更新的项目,将其发送给客户端,并在客户端更新数据,然后我才会展示它所有客户同时进行,对吗?

【问题讨论】:

    标签: php jquery laravel-5 eloquent


    【解决方案1】:

    您可以通过返回 json 的端点获取数据并进行渲染。然后使用 websocket,如果发生更改,您可以向所有连接的客户端发送消息,以从该端点重新获取数据。另外,我强烈建议对大型数据集使用分页。

    【讨论】:

    • 我需要找到更多关于什么是端点的信息,因为我的英语太糟糕了......无论如何,谢谢你,我不能使用分页,因为所有用户都应该看到他们在列表中的位置.它的列表有点复杂。这个想法是我必须向所有用户展示他们与其他用户竞争的产品。这样我就不能将数据库中的查询分成几部分。由于同一个用户可以在第 1 项的列表顶部和在第 16 项的末尾这是示例,它看起来像 [i.ibb.co/3Rz7xDW/Screenshot-from-2019-05-17-22-06-58.png]
    • 端点是返回数据的 url(即:http://api.com/endpoint)。任何客户端都可以使用它来使用 AJAX 获取 json 数据。这样,当客户端加载页面时,它将加载数据并连接到您的 websocket 服务器。如果 websocket 服务器返回类似重新获取数据的消息,那么它只会向端点发出另一个 ajax 请求并替换已经存储的内容。您应该使用 React 或其他前端库来创建页面,这样您就不必手动替换 DOM 中的内容。
    • 但是如果我想替换新数据,我需要将以前的数据保存在某个地方,对吗?是否可以对所有这些数据进行快速排序,而不是在服务器上对其进行排序和分组,然后作为部分视图快速发送到客户端?
    • 我觉得在这里解释不是一件简单的事情。您将需要设置一个像 MySQL 这样的数据库来存储数据。客户端不需要存储数据,他们将从后端服务器获取数据。如果您进行更新,您将更新后端数据库。
    • 所以唯一的方法是设置我的数据库服务器并获得尽可能多的服务器功能,对吧?可能是,您可以就我应该谷歌搜索什么、应该学习什么以及如何优化这么大的查询提供一些建议。我想,我可以使用 memcache 快速保存和获取所有这些数据,这是个好主意吗?
    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 2018-03-04
    • 1970-01-01
    • 2021-09-27
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    相关资源
    最近更新 更多