我现在 用  asp.net Ajax 的AutoCompleteExtender 控件时发现一个问题。比方说在 AutoCompleteExtender 指定的文本框内输入一个字符后 就会激发事件 并去数据库 查找。 那么每个用户输入一个字符后 服务器都会连接一次数据库 并查询一次,如果并发用户过多的话服务器肯定受不了。  我在 是不是可以预先把数据 缓存在莫个地方。 查询时就不查数据库 只查缓存。 应该怎么做?  还有应该缓存到哪里?

解决方案 »

  1.   

    EnableCaching 修改这个属性 
      

  2.   

    设置控件属性
    EnableCaching="true"
      

  3.   

     感谢各位的回帖。 还有请原谅我这个小白。  再问下EnableCaching="true" 是什么意思。? 还有 我上面说的缓存 应该存到哪里? 还有怎样从缓存中读取?
      

  4.   

    enable就是"能"Caching就是"缓存",“能缓存”。至于存到哪里,不用你自己取了吧。已经封装好了
      

  5.   

    这是个客户端局部缓存,如果要在服务器缓存,只要把访问数据库的结果放到cache对象里面就可以了
      

  6.   

    把数据如datatable直接放到Cache里面,然后再查询,1万多放到缓存不多的
      

  7.   

    >>我所要的效果是 从缓存中读取数据。 并不是把查找到的数据放入缓存没有鸡蛋哪来的鸡
      

  8.   

    我建议你直接查询数据库。我的网站:svn服务器
      

  9.   

     那么 把缓存存在 cache中  那么是不是每个用户 都用有一个cache缓存 。每次再从cache中读取数据。 这样的效率可能也不高吧。 能不能缓存到客户端去?
      

  10.   

    >>那么 把缓存存在 cache中  那么是不是每个用户 都用有一个cache缓存 。每次再从cache中读取数据。 这样的效率可能也不高吧。 能不能缓存到客户端去?
    EnableCaching="true"就是把数据放到客户端,服务器的cache是所有人公用,有一个存入了,别人就可以直接取了,lz还是看看什么是缓存,如何实现,再来考虑实际应用的细节问题
      

  11.   

    其实我建议你最好不用cache,因为它在一段时间里没有活动就会自动晴空的,那样的话,你还得维护这个缓冲区。
    可以在系统启动时,把信息写到临时文件里去,写个专门解析这个文件的类来读取,
      

  12.   

    EnableCaching="true"就是把数据放到客户端,服务器的cache是所有人公用,有一个存入了,别人就可以直接取了,lz还是看看什么是缓存
      

  13.   

      谢谢 这位高手。 我明白了。 但是我还想无耻的问最后一个问题 怎样从 chache中读取数据。难道用 循环读取? 有没有更方便的?
      

  14.   

    回使用DataTable等对象的检索功能吗?会的话,你就不用无耻拉
      

  15.   


     我现在的数据有1万多条。 怎样放入cache 怎样读取?
      请原谅我的无知。。回答我就结贴。
      

  16.   

    DataTable dt=Cache.Get(key);
    if(dt==null)
    {
    ...取数据
    dt=...;
    Cache.Add(dt,...);
    }
    DataRow[] drs=dt.select("");
    当然也可以使用其他对象,今天心情好,写一点,呵呵
      

  17.   

    DataTable dt=(DataTable)Cache.Get(key); 这里要这么写
      

  18.   

    Cache.Get(key) 
    为什么我没找到 Get这个方法?
      

  19.   

    DataTable dt=(DataTable)Cache.Get(key); 这里要这么写