首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可排序用户列表最佳实践

可排序用户列表最佳实践
EN

Stack Overflow用户
提问于 2015-09-22 22:20:23
回答 1查看 60关注 0票数 1

我正在尝试做一个the服务,多个用户可以同时登录。在Nodejs服务器上,有一个包含所有用户的未排序数组。和一个所有用户的数据库。

每个用户都可以在引导表中看到每个在线用户,从.开始就有不同的用户名、Id、online列。还有包括在线和离线用户的列表。最重要的部分是,表应该像每隔3-5秒更新一次。

我希望用户能够通过单击列的Tableheader对联机用户表进行排序。这样做的最佳做法是什么?

我目前只能想出两种不同的解决方案,这两种方法对我来说都不太完美。

1.使用引导带排序

我保存用户希望对列表进行排序的信息。然后,我接收未排序的数据并将其填充到该表中,之后,我将触发对标头的单击,并再次以相同的方式对表进行排序。

但是如果我这样做的话,我想用户总是会注意到,如果每隔3-5秒完成一次,表就会被重新填充,然后重新排序。

2.在服务器上保存排序列表

将所有不同排序的用户列表始终保存在my上,并让服务器每3-5秒对它们进行排序。然后,当客户端请求时,将他当前想要的排序列表发送到客户端,并填充表HTML。

但是这样的话,我认为它将使用来自我的服务器的相当多的资源,因为它还必须为组排序一些混合的在线/离线用户,这将是许多不同的表,我不得不在我的服务器上不断地保存和重新排序。

是否有更好的方法为客户端实现许多可排序的用户列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 23:35:38

UI的重要之处在于减少闪烁和任何形式的滞后。首先,在数据显示在表中之前,尝试测试用户端的排序。您不想触发单击事件,因为这可能会在数据输入、显示、排序、然后再次显示时产生闪烁效果。如果由于某种原因,排序时间太长,这可能会导致ui上的滞后或不稳定,所以测试它,看看它的感觉。只有当客户端表现不佳时,我才会查看服务器端。检查您的CPU和RAM,看看如何最好地处理这一点。动态排序可能是可行的,与您的设置,或保持它在RAM可能是一个选项,如果你有一些备用。

服务器端存储在站点范围或线程引擎变量中的ram中。如果您能够摆脱它,线程引擎变量将是最快的选项,但是代价将是SORTEDDATA_BYTES * WEB_THREADS。

代码语言:javascript
复制
Array.prototype.keySort = function(k, descending) {
  var z = descending === true ? -1 : 1;
  this.sort(function(a, b) {
    return a[k] > b[k] ? 1*z : a[k] < b[k] ? -1*z : 0;
  });
  return this;
};

var sortedJSON = {
  UsernameAsc: JSON.stringify(data.keySort("Username")),
  UsernameDesc: JSON.stringify(data.keySort("Username", true)),
  IdAsc: JSON.stringify(data.keySort("Id")),
  IdDesc: JSON.stringify(data.keySort("Id", true))
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32727926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档