当前位置: 代码迷 >> ASP.NET >> 小弟的一个项目用了ASP.NET的Cache,可是调试程序的时候发现Cache的命中率好低,该如何解决
  详细解决方案

小弟的一个项目用了ASP.NET的Cache,可是调试程序的时候发现Cache的命中率好低,该如何解决

热度:8566   发布时间:2013-02-25 00:00:00.0
小弟的一个项目用了ASP.NET的Cache,可是调试程序的时候发现Cache的命中率好低
这个Cache基本上是仿照PetShop4.0写的,看一下逻辑层的一段代码,感觉命中率好低啊!
C# code
        public DataTable SelectLsgInfo()        {            DataTable myTable = (DataTable)HttpRuntime.Cache[LSG_INFO_WHB];            if (myTable == null)            {                sql = "select lingshigong.id,lsgname,phone,duiname,bianhao from lingshigong, duiinfo where lingshigong.dui_id = duiinfo.id";                myTable = DbLink.ExecuteDataTable(linkstr1, sql, CommandType.Text);                AggregateCacheDependency cd = DependencyFacade.GetLsgCache();                HttpRuntime.Cache.Add(LSG_INFO_WHB, myTable, cd, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(30), CacheItemPriority.Low, null);            }            return myTable;        }

==============================================
谢谢各位大虾了!肯定是偶的程序没写好,请大家多帮帮忙.

------解决方案--------------------------------------------------------
怎么知道命中率的?程序每次重新编译执行cache肯定都是空的.
如果有问题,别的好象都看不到明显的问题,那问题可能出在这里:
AggregateCacheDependency cd = DependencyFacade.GetLsgCache();

------解决方案--------------------------------------------------------
这不可能,你的代码可以看到先从Cache取数据,取不到才从数据库取,怎么可能没用呢?
问题有可能在这里,AggregateCacheDependency cd = DependencyFacade.GetLsgCache();
你看看Cache的依赖项是否每次都发生变化吧。
如果你的项目不需要Cache,也可以取消它嘛。
  相关解决方案