首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-02-26 
小弟的一个项目用了ASP.NET的Cache,可是调试程序的时候发现Cache的命中率好低这个Cache基本上是仿照PetSho

小弟的一个项目用了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,也可以取消它嘛。

热点排行