这个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,也可以取消它嘛。