可排序用户列表最佳做法

时间:2015-09-22 22:20:24

标签: javascript node.js twitter-bootstrap sorting

我试图建立一个可以同时登录多个用户的Web服务。在Nodejs服务器上有一个包含所有用户的未排序数组。和所有用户的数据库。

每个用户都可以随时在HTML Bootstrap表中看到在线用户,其中包含用户名,ID,在线的不同列,以及....还有列表包括在线和离线用户。重要的是,表格应该每3-5秒更新一次

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

我目前只能想到两种不同的解决方案,对我来说都不是很完美。

1。使用Bootstrap排序

我以用户希望对列表进行排序的方式保存信息。 然后我收到未分类的数据并用它填充表格,之后我将触发标题点击并再次以相同的方式对表格进行排序。

但是,如果我这样做,我认为用户将始终注意到表重新填充,然后如果每3-5秒完成一次,则再次排序。

2。在服务器上保留已排序的列表

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

但是这种方式我认为它会使用我服务器上的一些资源,因为它还必须为一些混合的在线/离线用户排序,这些用户组将是我必须不断保存并在我的服务器上重新排序的许多不同的表。 / p>

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

1 个答案:

答案 0 :(得分:1)

关于UI的重要一点是减少闪烁和任何类型的延迟。首先尝试在数据显示在表中之前测试用户端的排序。您不希望触发单击事件,因为这可能会在数据进入,显示,排序,然后再次显示时产生闪烁效果。如果由于某种原因分拣时间太长,这可能会导致ui出现滞后或波动,所以要测试它并看看它的感觉。如果客户端表现不佳,我只会查看服务器端。检查您的CPU和RAM,看看如何最好地处理它。如果你有一些备用的话,可以在你的设置中进行即时排序或将其保存在RAM中。

Serverside存储在ram中的站点范围或线程引擎变量中。如果你可以逃脱它,线程引擎变量将是最快的选择,但成本将是SORTEDDATA_BYTES * WEB_THREADS。

public static void calcMeth(int minS){  //method 3
    int hourS;  // hours 
    int priceH;  // price for hours used
    int remMin;     // minutes over an hour
    int priceMin;   // price of minutes used over an hour
    int totalPrice;

    hourS=minS/60;