首页 新闻 会员 周边 捐助

.net数据缓存方案

0
悬赏园豆:50 [已解决问题] 解决于 2010-11-08 15:39

现在想把一些重复使用的数据进行优化,把这些数据进行缓存,然后每次碰到重复数据的时候调用缓存就可以了.

cache进行缓存,cache.insert(数据)应该在哪里初始化缓存数据,缓存数据会及时更新吗(数据添加删除修改操作后),是否会出现数据并发问题。是否还有别的缓存数据方法。

单单的忧伤的主页 单单的忧伤 | 初学一级 | 园豆:59
提问于:2010-11-02 10:09
< >
分享
最佳答案
1

LS的兄弟代码上说首次访问的时候才设置cache缓存,但是当cache缓存过期呢?那就只会永远访问不到缓存了(除非你是首次访问);cache缓存的话,你需要的时候就可以使用啊,insert可以设置缓存过期时间的,而且insert里面可以设置缓存依赖,依赖可以设置时文件依赖(当文件修改的时候,自动清除缓存)页面依赖(当服务器某个页面修改后,自动清除缓存),当然,缓存依赖不能扩展到你的操作上,比如你添加修改了数据,缓存依赖就检测不到,不过,这没问题,编写一个专门清除缓存的函数,把它写在你修改数据的代码里面,每当修改数据的时候清除相应的缓存。

另,asp.net里面有很多缓存机制,总的来说就分:客户端缓存和服务端缓存:客户端缓存没什么好说的,在<%@ OutputCache Duration="60" VaryByParam="None" %>设置,也可以在后台

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);设置;服务端缓存就非常的多:cache是最常见的,还有
专门的服务端缓存,写在页面上:
<%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %>
后台:Response.Cache.SetCacheability(HttpCacheability.Server);
还有就是重写asp.net运行周期中的stream输出html流,把它写到数据库或者cache都行
看你怎么用咯
收获园豆:30
dodohua | 小虾三级 |园豆:1037 | 2010-11-02 11:13
mark了
like%'远远'% | 园豆:635 (小虾三级) | 2010-11-02 11:27
你好,cache过期时间好解决,cache设置文件依赖,频发操作IO会对服务器硬盘造成压力吧,然后还有网站访问量高的话,并发问题如何解决。
单单的忧伤 | 园豆:59 (初学一级) | 2010-11-02 11:33
我很奇怪,cache缓存,怎么会牵涉到磁盘的io操作呢?还有并发量,发布的时候是由iis设置的连接数决定的,并发量可不是单单程序能解决的问题,程序只能优化性能和解决并发时发生死锁的情况,并发量的大小主要看你的服务器带宽,系统设置的连接数,SQL里面的连接池性能多方面决定的
dodohua | 园豆:1037 (小虾三级) | 2010-11-03 09:26
其他回答(3)
0

if(!ispostback)

{

  if(Cache["dt"] !=null)

  {

    xx.DataSource=(Datatable)Cache["dt"];

  }

  else

  {

    xx.DataSource=dt;

  }

}


收获园豆:5
like%'远远'% | 园豆:635 (小虾三级) | 2010-11-02 10:39
0

有系统级缓存和用户缓别的缓存,系统级缓存在Application start时就可以加载,用户级在用户登录时可以加载

考虑并发和超时问题可以做一个cache管理器来管理这些缓存数据的存取之类的!

收获园豆:10
LoujaDy | 园豆:908 (小虾三级) | 2010-11-02 12:52
0

        object obj = Utility.DataCache.GetCache("mallclasslist");
        if (obj == null)
        {
            MallClass bll = new MallClass();
            classList = bll.GetList(null);
            Utility.DataCache.SetCache("mallclasslist", classList, DateTime.UtcNow.AddMinutes(20), System.Web.Caching.Cache.NoSlidingExpiration);
        }
        else
        {
            classList = obj as List<MallClassInfo>;
        }

收获园豆:5
慧☆星 | 园豆:5722 (大侠五级) | 2010-11-02 13:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册