Cache缓存以及其它知识

来源:互联网 发布:vb post教程 编辑:程序博客网 时间:2024/05/01 13:04

一、 Cache缓存    (在所有的用户中共享)
1.第一个用户访问时将在数据库中查出的数据存在Cache中,别的用户再次访问时,去Cache中访问,不用再次连接数据库了。
书写:Cache["article"] = dt;
 if (Cache["article"]==null)
{
    数据库的连接,查询,将值放在 DataTable中;
    Cache["article"] = dt;
}
 dt = Cache["article"] as DataTable;//转换格式
 this.GridView1.DataSource =dt;//将值附给控件
 this.GridView1.DataBind();

2.如果数据库中的值发生改变,而我们已经在程序中建立缓存那么每一次的访问都是缓存中的,页面中的内容将无法经行更新。
所以我们对Cache要有过期时间,或者清除。

a)每隔一段时间更新一次

if (Cache["article"]==null)
{
    数据库的连接,查询,将值放在 DataTable中;
   Cache.Insert("article",dt,null,DateTime.UtcNow.AddSeconds(5),TimeSpan.Zero);//设置过期时间,当时间达到时,Cache自动
                                                                                 清除
}
b)//根据外部条件更新,当监视的文件发生改变时,Cache过期
if (Cache["article"]==null)
{
    数据库的连接,查询,将值放在 DataTable中;
   CacheDependency cd=new CacheDependency("D:\\笔记.txt");
   Cache.Insert("article",dt,cd,DateTime.UtcNow.AddMinutes(5),TimeSpan.Zero);
}
c)根据访问情况更新,如果在20秒之内没有人访问那么过期,如果有人访问,那么时间就会重新定为20秒
if (Cache["article"]==null)
{
    数据库的连接,查询,将值放在 DataTable中;
   CacheDependency cd=new CacheDependency("D:\\笔记.txt");
 Cache.Insert("article",dt, null, DateTime.MaxValue,TimeSpan.FromSeconds(20));
}
d)根据数据更新情况更新,当数据变化时,就使用命令将 Cache过期
//设置cache里面的article键对应的对象过期
   Cache.Remove("article");//移除

二、其它

1.将一个变量转换为一个类,使用as关键字。

例如:Cache["article"] as DataTable;

2.如果将变量或者类型实例声明为静态的则不会每次加载页面都重新实例化,能够保存上次的值

例如:  static List<Article> list = new List<Article>();

当再次访问页面时list不会重新建立,而会保存上次的内容。

3.GridView的数据源( this.GridView1.DataSource =list或datatable或dataset;)除了datatable,dataset之外还可以是List

4.数据库获取时间的方法是:getdate();
C#中获取时间:DateTime.Now();是获取当前时间。还有一些其它方法。
数据库中的时间格式到毫秒,在C#中使用   Convert.ToDateTime().ToString("yyyy-MM-dd:hh-mm-ss");改为2013-11-15:小时:分钟:秒

原创粉丝点击