需求:在全局变量中定义一个变量,存放一个字符串,可以让所有浏览网页的人都能获取到字符串的值,而不用都访问数据库进行获取。
好处:哪怕打开100个浏览器也只会访问全局变量的值,不用连接100次数据库去查询,然后每秒钟只需要连接一次数据库更新全局变量里的值即可。问题:存放在全局变量中的字符串如何每一秒都从数据库中提取新的值来放到全局变量中供客户端使用。
好处:哪怕打开100个浏览器也只会访问全局变量的值,不用连接100次数据库去查询,然后每秒钟只需要连接一次数据库更新全局变量里的值即可。问题:存放在全局变量中的字符串如何每一秒都从数据库中提取新的值来放到全局变量中供客户端使用。
因为页面类只在客户端请求时才生成对象,html发送后对象即销毁,所以是不能用来保存数据的。
静态变量会一直存在内存里,而且所有的页面访问的都是同一个变量,刚好符合你的要求
用System.Timers.Timer类申明一个计时器(要在Global.asax.cs文件中申明,这是全局应用程序类,只有这个才不会被销毁):
在Global类申明成员:
System.Timers.Timer timer1 = new System.Timers.Timer();
在Application_Start事件中添加代码:
timer1.Interval = 1800 * 1000;//时间间隔半小时
timer1.Elapsed += timer1_Tick;//触发函数
timer1.Start();//计时开始
然后在timer_Tick中写更新代码就可以了
这个定时器是系统定时器不依赖界面