如何缓存TreeView,Menu之类的控件,以加快访问速度

UDOBE 2005-07-03 08:39:43
大家都知道,如果Menu是从数据库读取数据进行构建的话,会花不少时间,
有没有办法,把构建好的Menu放到APPLICATION 或CACHE 中去,下次用的时候就从APPLICATION 或CACHE 中加载进来,就会快很多,但我没有试成功,

请高手出招

以下是我的源码
if (Application["menu2"]==null)
{
FreeControl.Web.BuildMenu bmu=new FreeControl.Web.BuildMenu();
bmu.SelectFromTableName="TreeNode";
bmu.NodeNavigateUrl="Products.aspx";
bmu.DbConnection=new OleDbConnection(FreeControl.Data.ConnectionString.ConString);
this.GiftMenu=bmu.BuildMenubar(this.GiftMenu,2));
Application["menu2"]=this.GiftMenu;
}
else
{
this.GiftMenu=(ComponentArt.Web.UI.Menu)Application["menu2"];
//这行代码有运行,但是菜单就不见了


}
...全文
294 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
upshania 2005-07-20
  • 打赏
  • 举报
回复
树的操作用JS来完成吧。。。

还有把状态视图设为false 不要向服务端回发。。。各种请求通过别的页面来处理服务端信息
brando_beat 2005-07-20
  • 打赏
  • 举报
回复
我也觉得是缓存数据、不是菜单
coveking 2005-07-20
  • 打赏
  • 举报
回复
我也在做treeview这方面,楼主可不可以留个联系方式方便交流
超级大笨狼 2005-07-20
  • 打赏
  • 举报
回复
Cache userControl或者数据



/// <summary>
/// generalUTL 的摘要说明。
/// 这里存放一些基本的辅助函数
/// 1,缓存相关的:设置,获取和清空,当数据发生更新的时候可以设置缓存,也可以直接清空缓存。
/// </summary>
public class generalUTL
{
#region 缓存相关的。
/// <summary>
/// 利用工厂模式设置缓存。
/// </summary>
/// <param name="key"></param>
public static System.Data.DataTable setCache(string key)
{
System.Data.DataTable dt=new DataTable();
Type t = Type.GetType("DreamZone.Core.sysCollection");
MethodInfo method = t.GetMethod(key);
dt=(System.Data.DataTable)method.Invoke(null,null);
setCache(key,dt);
return dt;
}
/// <summary>
/// 直接利用key和dt设置。
/// </summary>
/// <param name="key"></param>
/// <param name="dt"></param>
/// <returns></returns>
public static System.Data.DataTable setCache(string key,System.Data.DataTable dt)
{
//HttpContext.Current.Cache.Add(key,dt,null,DateTime.MaxValue,new TimeSpan(0,0,1,0),CacheItemPriority.High,null);
HttpContext.Current.Cache.Add(key,dt,null,DateTime.MaxValue,new TimeSpan(0,0,1,0),CacheItemPriority.High,null);
return dt;
}
/// <summary>
/// 从缓存中获取,如果为空设置缓存
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static System.Data.DataTable getCache(string key)
{
System.Data.DataTable dt=new DataTable();
if(HttpContext.Current.Cache[key]!=null)
{
dt=(System.Data.DataTable)HttpContext.Current.Cache[key];
}
else
{
dt= setCache(key);
}

return dt;
}
/// <summary>
/// 清空缓存
/// </summary>
/// <param name="key"></param>
public static void clearCache(string key)
{
HttpContext.Current.Cache.Remove(key);
}
#endregion
gyf19 2005-07-05
  • 打赏
  • 举报
回复
我建议:如果系统常常用到TreeView,Menu之类的控件的话,可以Caching起来!!
UDOBE 2005-07-05
  • 打赏
  • 举报
回复
高手请出招
UDOBE 2005-07-04
  • 打赏
  • 举报
回复
各位高手出招,有例子最好了,先谢了
hedonister 2005-07-03
  • 打赏
  • 举报
回复
如何在ASP.NET中使用缓存Caching
http://www.cnblogs.com/hedonister/archive/2005/06/17/176065.html
cuike519 2005-07-03
  • 打赏
  • 举报
回复
菜单的展现要和页面的生命周期同步!

你可以缓存你的数据而不是整个菜单对象!
hackate 2005-07-03
  • 打赏
  • 举报
回复
用用户控件的换存,把他们放到用户控件是个方法
boytomato 2005-07-03
  • 打赏
  • 举报
回复
有必要吗..??
xxrl 2005-07-03
  • 打赏
  • 举报
回复
.NET的缓存机制 用不到么?

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧