看孟子E章文章《在Web应用程序中执行计划任务》想到的问题,请教大家。
最近在试着做一个学习性质的小系统,大体就是:很多人向数据库写东西,我这边开着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重启才触发。我想了想我的情况,能不能在有客户连接服务器时就执行更新“数据缓存”,没客户链接就不自动更新了?(怎么说也得要让服务器休息休息啊^_^)
最近严重透支(问题多啊),请大家不吝指教,有分了再“追加”。谢谢。
------解决方案--------------------数据缓存”的想法不错,.net 2.0还可以当数据库中数据变化了自动更新缓存。这样是比较好的做法。当然,如果数据量非常大,要考虑一下服务器资源的问题。既然是最新数据,我想没有必要保留太多。只缓存最新的一些数据即可。
------解决方案--------------------小生认为楼主靠对数据库不断获取变更内容是不妥的。在实战中这样做用户一多对数据库压力会比较大。
小生认为,分两步去做可能比较合适,对数据的变更操作,首先存非数据库容器一部分,并记录变更时间,然后变更数据库内容。获取方面,由用户发送对接时间与GUID,如果是非全部获取用户,则只从非数据库容器中获取相应内容。否则从库中获得。
非数据库容器目前小生认为CACHE是最合适的。