Cache有什么优点如果不考虑 “动态的失效期”,“对象设置依存关系”,等,
他和自己写一个静态的Hash表对象相比。有什么优点?

解决方案 »

  1.   

    去看下享元模式吧.
    其实Cache就是享元模式一种.net里现成的应用罢了.
    享元模式最原始的实现也是通过静态HashTable来做的.
    或者再有兴趣,你自己去看一下Cache的实现代码(Framework里的有工具去看这些东西的实现)
      

  2.   

    享元模式 我知道。
    不过 Cache 是 享元模式?
      

  3.   

    Cache技术在于CacheDependency。如果你没有掌握设置CacheDeopendendy参数的技术,就等于没有真正掌握Cache技术。默认地,即使不设置CacheDependency参数,Cache也会依据服务器的内存状况,以及对象使用的频繁程度等条件,自动地清除不需要的缓存数据。而HashTable只是傻傻地强占内存而已。
      

  4.   

    然而从实际应用角度考虑,不自己控制CacheDedency,就无法让缓存真实地和自动地响应数据失效事件,脏数据就是内存垃圾了。所以在很多人写得缓存代码那里,用垃圾当作有效数据,很成问题。
      

  5.   

    Asp.net缓存技术总结,总结的比较细致
      

  6.   

    Cache对象:
    void Page_Load()
    {
        DataTable dt=(DataTable)Cache["dtkey"];
        if(dt==null)
        {
            dt=getdtFromDB();  //此处调用方法从数据库中返回数据项DataTable
            Cache.Insert("dtKey",dt,null,DateTime.Now.AddHours(1),Cache.NoSlidingExpiration);  //此处使用绝对过期策略添加项目
        }
        GridView1.DataSource=dt;
        GridView1.DataBind();
      

  7.   


    你的意思是说,Cache会根据内存使用状况,
    自动让缓存失效?
      

  8.   

    我没有具体去看过Cache的实现代码.不过从个人对享元模式的理解上,觉得是.
      

  9.   

    CacheDependency缓存依赖项,其依赖于数据库中某个表的变化
    若此表更新了,则缓存失效。
    具体可参考petshop