我最近接管了一个支持项目,其中一个Web应用程序在加载页面时数据非常糟糕。在排除故障后,我发现它从DB中提取的记录数是8541,并存储在名为originalList
的列表中。然后,列表根据特定条件进行过滤,并存储在名为filteredList
的列表中,计数为2170.这两个列表都存储在会话对象中。然后在屏幕上显示filteredList
。在整个过程中,需要一分多钟的时间,因为它有时会得到超时(请注意,代理服务器上的最大超时时间设置为1分钟,我们不能更改)。这发生在屏幕上加载并且不需要人工干预。Java设计:动态查询或会话数据存储
在会话中存储两个列表的原因是:屏幕还有一些搜索条件,用户填写特定的搜索框并单击搜索按钮。系统试图根据搜索条件从名为originalList
的列表中过滤数据,而不是从数据库中获取数据。这是由用户触发的。
问题:
- 它是明智的大量数据存储在会话?
- 为什么在屏幕上加载〜2000条记录需要一分多钟?
- 会话中的大量数据会影响数据在屏幕上的加载吗?
- 当用户触发搜索时,将设计更改为从数据库获取数据而不是从会话访问可以吗?
用到的技术:
- SQL服务器
- 的Java 1.6
- 的Struts 2
- 平原JDBC(无ORM框架)
- 普通的JavaScript(无jQuery的)
由于它是以非常古老的方式开发的,我无法改变框架。
您可以使用单例来保存Web应用程序中的数据。 –
有太多可能的答案,或者对于这种格式,答案太长。请添加详细信息以缩小答案集或隔离几个段落中可以回答的问题。 –