请问在页面中每次按键输入都要搜索后台数据库,进行数据检索(极端情况下每按一个字母都要进行数据检索),且涉及数据量较大,又要求反映速度,如何处理?
数据缓存的处理
换工作。
从你的描述看来,可能是Applet的BS应用,或者直接就是CS应用,因为这里是J2EE论坛,如果是delphi,VB什么的当我没说。
我想,你可能需要确认一下,到底数据量有多大,这些数据是不是只读的(对于你这里的功能实现来说)。如果真的要做成每一次按键都做远程网络访问的话,我认为不可行。如果是CS结构的东西,我觉得要检索的部分一定要load到客户端。如果是BS的东西,比如Applet的,初始化的时候将数据load到客户端。如果数据大到不能load,在局域网内尚可一试,在Internet还是算了吧。
呵呵,我说的输入形式有点类似于金山辞霸的输入形式,不过是标准的b/s结构,使用javascript和html作为客户端输入界面。因为每输入一键都要进行数据检索,而且数据检索量比较大(约有10000条左右,每一条有200字节左右),所以如果每输入一键都要检索数据库,或通过网络传输,速度肯定受影响,如果都把数据都缓存到客户端内存,那么下载等待的时间也比较长,并且也不能即时反映数据库数据的变化情况。所以请问老兄有什么好的解决方法?
是说的每输入一个字就要触发onkeydown事件,同时刷新某个区域的显示内容吧。
如果时这个问题,你的数据又在10000左右,就不要想了。用JS的响应把你慢死。
并且还有内存的问题,如果客户端的内存不够,就歇菜了。
听起来是死路一条。
兄弟就不要冒险了。
啊,对了,你不会是在我离开的那个公司吧!
怎么和过去我遭遇的无理需求一样啊。
你说的这个我们叫做快速录入。
在两层下很容易解决。三层下也可以解决,但有数据量的问题。
我们现在的解决方法是数据量小的话,全部传到客户端,在客户端筛选。
数据量大但变化量较小,使用文件定期传到客户端保存,然后从中过滤。
数据量大而且变化量也大,就只有从客户身上下手了。既然是采用的bs结构,就请不要提出这样无理的要求。
我曾经想过使用cookie进行缓存,但是cookie最多只能存储4k的数据量。另外,大部分需要缓存的数据都是一些比较固定的信息如人名、商品名称、厂家等,所以如果能作为某种形式的文件缓存在客户端,你就再好不过了,呵呵!
使用文件是没有问题的,用各种技术都可以解决。但是需要证书开放客户端的权限
我们因为绑死在ie上了,所以就用ie的控件Scripting.FileSystemObject就行了。如果想跨平台的话,可以用applet。