网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C# > 正文
充分利用ASP.NET的三种缓存提高站点性能
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/14
下载{$ArticleTitle}原创论文样式
m.Web.Caching.CacheItemPriority枚举中定义的)以及当缓存中的对象到期时调用的CacheItemRemovedCallback函数。大多数时候,默认的优先级已经足够了-缓存引擎可以正常完成任务并处理缓存的内存管理。CacheItemRemovedCallback选项考虑到一些很有趣的可能性,但实际上它很少使用。不过,为了说明该方法,我将提供它的一个使用示例:
  
    CacheItemRemovedCallback示例
  
  System.Web.Caching.CacheItemRemovedCallback callback = new System.Web.Caching.CacheItemRemovedCallback (OnRemove);
  Cache.Insert("key",myFile,null,
   System.Web.Caching.Cache.NoAbsoluteExpiration,
   TimeSpan.Zero,
   System.Web.Caching.CacheItemPriority.Default, callback);
  . . .
  public static void OnRemove(string key, object cacheItem,
   System.Web.Caching.CacheItemRemovedReason reason)
  {
   AppendLog("The cached value with key ''" + key +
  "'' was removed from the cache. Reason: " +
   reason.ToString());
  }
  
    该示例将使用AppendLog()方法中定义的任何逻辑来记录缓存中的数据到期的原因。通过在从缓存中删除项时记录这些项并记录删除的原因,您可以确定是否在有效地使用缓存或者您是否可能需要增加服务器上的内存。注意,callback是一个静态(在VB中为Shared)方法,建议使用该方法的原因是,如果不使用它,保存回调函数的类的实例将保留在内存中,以支持回调(对static/Shared方法则没有必要)。
  
    该特性有一个潜在的用处-在后台刷新缓存的数据,这样用户永远都不必等待数据被填充,但数据始终保持相对较新的状态。但实际上,此特性并不适用于当前版本的缓存API,因为在从缓存中删除缓存的项之前,不触发或不完成回调。因此,用户将频繁地发出尝试访问缓存值的请求,然后发现缓存值为空,不得不等待缓存值的重新填充。我希望在未来的ASP.NET版本中看到一个附加的回调,可以称为CachedItemExpiredBut
  
    NotRemovedCallback,如果定义了该回调,则必须在删除缓存项之前完成执行。
  
    缓存数据引用模式
  
    每当我们尝试访问缓存中的数据时,都应该考虑到一种情况,那就是数据可能已经不在缓存中了。因此,下面的模式应该普遍适用于您对缓存的数据的访问。在这种情况下,我们假定已缓存的数据是一个数据表。
  
  public DataTable GetCustomers(bool BypassCache)
  {
   string cacheKey = "CustomersDataTable";
   object cacheItem = Cache[cacheKey] as DataTable;
   if((BypassCache) || (cacheItem == null))
   {
    cacheItem = GetCustomersFromDataSource();
    Cache.Insert(cacheKey, cacheItem, null,
    DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey), TimeSpan.Zero);
   }
   return (DataTable)cacheItem;
  }
  
    关于此模式,有以下几点需要注意:
  
    1) 某些值(例如,cacheKey、cacheItem和缓存持续时间)是一次定义的,并且只定义一次。
  
    2) 可以根据需要跳过缓存-例如,当注册一个新

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号