最近在试着做一个学习性质的小系统,大体就是:很多人向数据库写东西,我这边开着IE能实时显示这些改变。开发工具是vs2003.net,因为是无刷新所以用ajax.net,    起初是在页面用javascript的settimeout函数每隔一秒重新加载所有数据库数据,在页面中用javascript画出table,
    后来觉得每次加载所有数据浪费,就按时间取出新的数据,再在页面中用table.insertRow()“追画”到table中。
    再后来觉得 如果很多人开着IE在实时显示,那么每个人都在执行一个连数据库的进程,这也是浪费,就想能不能在服务器中维护一个“数据缓存”,服务器每隔一秒就更新这块“数据缓存”,而每个客户链接都向这块“数据缓存”中取新的数据。这样服务器只需维护一个“数据缓存”到SQL Server的链接了。    “数据缓存”想用cache做(如果数据量大,不知合适不?),至于自动更新“数据缓存”就找到了孟子E章的这篇文章http://blog.csdn.net/net_lover/archive/2003/08/27/6943.aspx,他用的是Application_Start()、Application_End()这两个事件,Application_End好像只有在iis重启才触发。我想了想我的情况,能不能在有客户连接服务器时就执行更新“数据缓存”,没客户链接就不自动更新了?(怎么说也得要让服务器休息休息啊^_^)最近严重透支(问题多啊),请大家不吝指教,有分了再“追加”。谢谢。

解决方案 »

  1.   

    数据缓存”的想法不错,.net 2.0还可以当数据库中数据变化了自动更新缓存。这样是比较好的做法。当然,如果数据量非常大,要考虑一下服务器资源的问题。既然是最新数据,我想没有必要保留太多。只缓存最新的一些数据即可。
      

  2.   

    谢谢,身边没人可以交流.net。有很多问题只能自己想,又不知道想的对不对。现在要好好学习了^_^。
    “数据缓存”就得用cache做吧?vs2003中还有别的方法?
      

  3.   

    小生认为楼主靠对数据库不断获取变更内容是不妥的。在实战中这样做用户一多对数据库压力会比较大。
    小生认为,分两步去做可能比较合适,对数据的变更操作,首先存非数据库容器一部分,并记录变更时间,然后变更数据库内容。获取方面,由用户发送对接时间与GUID,如果是非全部获取用户,则只从非数据库容器中获取相应内容。否则从库中获得。
    非数据库容器目前小生认为CACHE是最合适的。
      

  4.   

    to seaonce(雨花中的小皮鞋):
        分两种方式获取有种让我“拍脑袋”的冲动^_^。    "在实战中这样做用户一多对数据库压力会比较大。"用户都向“数据缓存”中取数据了,数据库的压力应该与用户的多少没关系了吧?
      

  5.   

    to seaonce(雨花中的小皮鞋):
        还是有点不太对,按我说的意思,是“数据缓存”不断获取数据库内容,不管是一个用户还是100个用户,都是“数据缓存”在跟SQL Server打交道(只有一个数据库链接),客户打交道的是Cache中的“数据缓存”(这可能是我想的理想情况,实际怎么运行不知道了^_^)
      

  6.   

    中间可以加一层缓存层 比如xml