gpt4 book ai didi

performance - 将大量带有 Guid ID 的对象传输到客户端

转载 作者:行者123 更新时间:2023-12-03 13:06:17 24 4
gpt4 key购买 nike

我有一个 Web 应用程序,它使用 Guids 作为 Employee 对象和 Association 对象的数据库中的 PK。

我的应用程序中的一个页面返回大量数据,显示所有员工可能参与的所有协会。

所以现在,我基本上向客户端发送了一堆看起来像的对象:

{assocation_id: guid, employees: [guid1, guid2, ..., guidN]}

事实证明,许多员工属于许多协会,因此我在这些不同的对象中一遍又一遍地为这些员工发送相同的 Guid。例如,在某些情况下,我可能会在所有协会中发送 30,000 个总 guid,其中只有 500 名唯一员工。

我想知道是否值得我建立某种查找索引,我也将其发送给客户端,例如
{ 1: Guid1, 2: Guid2 ... } 

并用这些整数替换我发送的对象中的所有 Guid,

或者,如果简单地对响应进行 gzip 压缩就会对其进行足够的压缩,以至于这种额外的努力是不值得的?

注意:请不要纠结于我是否应该发送 30,000 条数据的细节——这不是我的选择,我对此无能为力(我也无法更改 Guids到数据库中的整数或长整数)。

最佳答案

您在问题的末尾写了以下内容

Note: please don't get caught up in the details of if I should be sending down 30,000 pieces of data or not -- this is not my choice and there is nothing I can do about it (and I also can't change Guids to ints or longs in the DB).



我认为这是你的主要问题。例如,如果您不解决主要问题,您将能够将传输数据的大小减少到 10 倍,但您仍然没有解决主要问题。让我们思考一个问题:为什么要向客户端(Web 浏览器)发送这么多数据?

需要客户端的数据来向用户显示一些信息。显示器不是很大,无法在一页上显示 30,000 个总数。没有用户能够掌握这么多信息。所以我确信你只显示了一小部分信息。在这种情况下,您应该只发送您显示的一小部分信息。

您没有描述如何在客户端使用 guid。例如,如果您在行编辑期间需要该信息。只有在用户开始编辑时才能传输数据。如果您只需要为一个关联传输数据。

如果您需要直接显示 guid,那么您不能一次显示所有信息。因此,您只能发送一页的信息。如果用户开始滚动或开始“下一页”按钮,您可以发送下一部分数据。通过这种方式,您可以真正显着减少传输数据的大小。

如果您确实无法重新设计应用程序的一部分,您可以实现您最初的建议:通过替换 GUID "{7EDBB957-5255-4b83-A4C4-0DF664905735}""7EDBB95752554b83A4C40DF664905735"到类似 123 的号码您将 GUID 的大小从 34 个字符减少到 3 个。如果您将额外发送“guid 映射”元素数组,例如
123:"7EDBB95752554b83A4C40DF664905735",

您可以将数据的原始大小 30000*34 = 1020000 (1 MB) 减少到 300*39 + 30000*3 = 11700+90000 = 101700 (100 KB)。因此,您可以将数据大小减少 10 倍。在网络服务器上使用动态数据压缩可以额外减少数据的大小。

无论如何,您应该检查为什么您的页面如此缓慢。如果程序在局域网中运行,那么即使传输 1MB 的数据也足够快。可能页面在将数据放置在网页上的过程中缓慢。我的意思是以下。如果您修改页面上的某些元素,则必须重新计算所有现有元素的位置。如果您首先使用断开连接的 DOM 对象,然后将整个数据部分放在页面上,则可以显着提高性能。您没有在您的 Web 应用程序中使用哪种技术的问题中发布信息,因此我不包含任何示例。例如,如果您使用 jQuery,我可以举一些更清楚我的意思的示例。

关于performance - 将大量带有 Guid ID 的对象传输到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com