我从服务器(数据库)中获取一些问题并将其显示给浏览器中的客户端(用户)。客户将回答问题,并根据他/她的回答,将从数据库中提取下一组问题。现在,我想在用户阅读当前问题时预先获取下一组问题,以便用户查看下一个问题的等待时间会缩短。
我的问题是,如何存储预先提出的问题,即我应该使用哪种数据结构将预先提取的问题存储在内存中,以便我可以获得更好的性能?我想要一个“缓存”类型的东西。此外,一旦用户点击来自缓存中的任何问题,问题将不再存在。
PS:每个问题都有唯一的ID。
由于
纳温
答案 0 :(得分:2)
有多种选择可供选择。一个产生重大影响的产品,一个产生很小的差异。
收集问题并将其存储在用户会话中的差别不大。它基本上取决于会话的存储位置,也可能是数据库或文件。这只有在您的数据库表非常非规范化并且需要大量连接才能得到答案时才有意义。我怀疑是这样的,所以无论使用哪种数据结构,用户都不会有太大的不同。
使用javascript直接在浏览器中使用AJAX预取它们会有很大的不同。在这种情况下,一个简单的数组就足够了。 JS为您提供了使用任何属性构建任何对象的灵活性,任何东西都足够好。因此,在JS中编写一个轮询器,在用户查看问题时从服务器获取问题,例如使用JSON返回它们。 JSON将成为一个简单的对象。由于每个用户只在浏览器中预存了几个问题,因此特定的数据结构选择也不会产生任何影响。
答案 1 :(得分:1)
答案 2 :(得分:0)
首先要考虑几个问题以适应您的背景:
如果要在服务器中预取,则存在许多缓存解决方案。
考虑到您的唯一ID(请参阅PS),如果此ID与数据库相关且您正在使用Hibernate,则最简单的解决方案是为该实体配置Hibernate二级缓存。然后,您唯一的代码就是提前运行查询....
如果这些必需品不合适,我使用EhCache作为缓存解决方案。 在某种程度上很容易开始使用,并且当你以后需要它时它有很多可用的功能。