首页 新闻 搜索 专区 学院

如何在同一次请求中避免对同一方法的重复调用

0
悬赏园豆:50 [已解决问题] 解决于 2009-06-02 16:20

场景是这样的:

系统首页由不少用户控件组成,很多用户控件中都有对一个方法的请求(包含该用户私有的数据内容),因此在访问首页的时候,会反复调用该方法。经测试如果返回该方法的返回结果。页面访问时间可至少减少3秒。

如何做到这样一个缓存失效机制,在第一次请求时缓存返回结果,在请求结束删除缓存。(内容比较大,不可能做成Session)。

try{Phoenix}的主页 try{Phoenix} | 初学一级 | 园豆:95
提问于:2009-06-02 14:31
< >
分享
最佳答案
0

可以使用

HttpContext.Current.Item[key] 

Leox | 菜鸟二级 |园豆:461 | 2009-06-02 15:33
其他回答(1)
0

你应该是在这个重复调用的方法中增加程序级别的缓存,

结果集=程序缓存["key"]

if(结果集==null)

{

重新得到结果集,并赋值。

加入缓存。

}

...实例代码

 System.Web.Caching.Cache cash = HttpRuntime.Cache;
            object obj = cash.Get(keys);//自己定义键值
            if (obj == null)
            {
                DataSet ds = new DataSet();
                        ds = DbHelperSQL.Query("select t.region_id value, t.region_name text from region t where t.is_enabled = 1 and SUBSTRING(t.tax_no_pattern,1,6) in (" + tax + ")");
     
               obj = ds;

      key=keystr
                cash.Add(key, obj, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(1200), System.Web.Caching.CacheItemPriority.High, null);
            }
            return (obj as DataSet).Tables[0];

邢少 | 园豆:10926 (专家六级) | 2009-06-02 15:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册