可sorting的用户列表最佳实践

我试图做一个web服务,在多个用户可以同时login。 在Nodejs服务器上有一个包含所有用户的未sorting数组。 和所有用户的数据库。

每个用户总是可以在HTML Bootstrap Table中查看每个用户的在线用户名和用户名, 列表中包含不同的列,并且还包含列表,包括在线和离线用户。 重要的是,表格应该每3-5秒更新一次

我希望用户能够通过单击一个列的Tableheadersorting在线用户表。 最佳做法是什么?

我现在只能想到两种不同的解决scheme,对我来说都不是很完美。

1.使用Bootstrapsorting

我保存用户想要sorting列表的信息。 然后我收到未分类的数据,并填写表格,之后我会触发一个点击标题,并再次以同样的方式sorting表。

但是,如果我这样做,我想用户会一直注意到表格被重新填充,然后重新sorting,如果每3-5秒完成一次。

2.保持服务器上的sorting列表

保持服务器上所有不同的sorting列表,并让服务器每隔3-5秒对它们进行sorting。 然后,当客户端请求它时,将他当前想要的sorting列表发送给客户端并填充表格HTML。

但是这种方式我认为它会使用我的服务器上的一些资源,因为它还需要对一些混合的在线/离线用户进行sorting,这些用户可能是许多不同的表,我不得不在我的服务器上不断地保存和重新sorting。

有没有更好的方法来为客户实现许多可sorting的用户列表?

UI的重要之处在于减less闪烁和任何滞后。 在数据显示在表格之前,首先尝试在用户端testingsorting。 您不希望触发点击事件,因为这可能会在数据进入,显示,sorting,然后再次显示时产生闪烁效应。 如果由于某种原因sorting时间过长,这可能会导致用户界面上的滞后或不连贯,所以testing一下,看看它的感觉如何。 如果客户端运行不正常,我只能看服务器端。 检查你的CPU和RAM,看看如何处理。 飞行中的sorting可能是可行的与您的设置或保留在RAM中可能是一个选项,如果你有一些备用。

Serverside存储在RAM中的站点范围或线程引擎variables中。 如果你能摆脱它,线程引擎variables将是最快的select,但成本将是SORTEDDATA_BYTES * WEB_THREADS。

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)) };