<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      不使用數(shù)據(jù)庫緩存依賴項(xiàng)實(shí)現(xiàn)同樣的功能

      先說下當(dāng)前項(xiàng)目的場景 后臺人員1天不定時的 添加新聞和視頻圖片10條左右 數(shù)量不多

      不使用緩存  來回和數(shù)據(jù)庫打交道 非常耗時 造成效率低  尤其是在數(shù)據(jù)量非常龐大的情況下

      可是加了緩存 加多少時間的緩存? 新聞要保證實(shí)時更新 一發(fā)布立刻顯示出來

      微軟給出了解決方法 數(shù)據(jù)庫緩存依賴項(xiàng) 但是貌似只能用在SQL上 而且要配置些東西  還有 并不透明~ 一些東西看不到

      http://msdn.microsoft.com/zh-cn/library/system.web.caching.sqlcachedependency%28VS.80%29.aspx 

      感興趣的朋友可以查下MSDN 這有個博客 也有介紹

      http://www.rzrgm.cn/ltp/archive/2009/06/30/1514331.html

      這里提供另一種方法 

      先說下大概思路  在所有查找操作時 都把結(jié)果插入 cache  在對數(shù)據(jù)庫有操作時(增刪改)  刪除cache

      有了思路 開始解決問題 這里會遇到兩個問題

      第一 :  所有查找時  cache建 怎么定義 保證不重復(fù)呢   第二:微軟沒有提供刪除所有cache的方法 只有cache["鍵值名"].Remove();  而沒有removeall();

      下面上代碼和解決辦法 以及思路

      #region##根據(jù)條件得到新聞
      /// <summary>
      /// 根據(jù)條件得到新聞
      /// </summary>
      /// <param name="tableName"></param>
      /// <param name="whereStr"></param>
      /// <param name="topCount"></param>
      /// <returns></returns>
      public List<CmsDemoModels.NewsInfo> GetByCondition(string whereStr, string topCount)
      {
      string cacheKey = string.Format("{0}.{1}.{2}", GetType(), "GetByCondition",whereStr+topCount);
      if (HttpRuntime.Cache[cacheKey] != null)
      {
      return HttpRuntime.Cache[cacheKey] as List<CmsDemoModels.NewsInfo>;
      }
      else
      {
      //從數(shù)據(jù)庫里查找并插入緩存
      using (CmsDemoDAL.NewsInfoServcie ns = new NewsInfoServcie())
      {
      List
      <NewsInfo> newsList=ns.GetByCondition(whereStr, topCount);
      HttpRuntime.Cache.Insert(cacheKey,newsList,
      null, DateTime.Now.AddDays(1), TimeSpan.Zero);
      return newsList;
      }
      }
      }
      看上面的代碼

         string cacheKey = string.Format("{0}.{1}.{2}", GetType(), "GetByCondition",whereStr+topCount);
      我定義這緩存鍵值不重復(fù)的方法是 用當(dāng)前類+方法名+所有參數(shù)名的組合 來保證唯一性

      這樣把所有查詢的方法 以及查詢結(jié)果都緩存起來了~

      public static void ClearOutputCache()
      {
      //移除自定義緩存
      foreach (var item in HttpRuntime.Cache.Cast<DictionaryEntry>().ToArray())
      {
      HttpRuntime.Cache.Remove((
      string)item.Key);
      }
      上面的方法 是刪除所有緩存

      可是又有個問題 我們有視頻表 圖片表 新聞 等等 我現(xiàn)在更新個新聞 就要刪除所有的緩存 其實(shí)只用刪除所有新聞的緩存就行了

      #region 刪除緩存

      /// <summary>
      /// 根據(jù)名字開頭刪除緩存
      /// </summary>
      /// <param name="StartName">緩存名字開頭</param>
      public void RemoveAllCache(string StartName)
      {
      //移除自定義應(yīng)用程序緩存
      DictionaryEntry[] de = HttpRuntime.Cache.Cast<DictionaryEntry>().ToArray();
      foreach (var item in de)
      {
      string cacheKey = item.Key.ToString();
      if (cacheKey.StartsWith(StartName))
      {
      HttpRuntime.Cache.Remove((
      string)item.Key);
      }
      }
      }

      #endregion
      稍微改進(jìn)下 效率又大大的提高了

      當(dāng)我們數(shù)據(jù)庫有變化時 比如添加了個新聞 調(diào)用
      p.RemoveAllCache(GetType().ToString());
      #region##添加新聞
      /// <summary>
      /// 添加新聞
      /// </summary>
      /// <param name="info"></param>
      /// <returns></returns>
      public int Add(CmsDemoModels.NewsInfo info)
      {

      using (CmsDemoDAL.NewsInfoServcie ns = new NewsInfoServcie())
      {
      info.ViewCount
      = 0;
      info.State
      = 0;
      info.SortIndex
      = GetMaxSort() + 1;
      int i= ns.Add(info);
      PubClass p
      = new PubClass();
      p.RemoveAllCache(GetType().ToString());
      return i;
      }
      }
      #endregion

       這樣就把所有以GetType().ToString() 開頭的刪除掉了~~ 實(shí)現(xiàn)新聞的刪除新聞的  視頻的刪除視頻的 

      PS: 這里新聞添加和 查找 都是在BLL層下的
      NewInfoManager類下 所以他們的 GetType().ToString() 會一樣

      大概思路就這樣

      有什么問題 可以留言交流 歡迎討論~
      
      
       
      posted on 2011-06-30 17:03  wlf  閱讀(3431)  評論(6)    收藏  舉報

      主站蜘蛛池模板: 欧美肥妇毛多水多bbxx| √天堂中文www官网在线| 国产精品亚洲欧美大片在线看| 国产亚洲av日韩精品熟女| 一级做a爰片在线播放| 中文字幕亚洲制服在线看| 亚洲中文字幕精品第一页| 无码人妻丰满熟妇啪啪| 国产精品一区二区三区激情| 无码人妻丝袜在线视频| 国产自在自线午夜精品| 成人午夜在线观看日韩| 中文字幕在线精品人妻| 一亚洲一区二区中文字幕| 东京热一区二区三区在线| 内射老妇bbwx0c0ck| 日韩国产精品一区二区av| 国产午夜精品福利视频| 精品夜恋影院亚洲欧洲| 午夜DY888国产精品影院| 国产在线啪| 极品少妇无套内射视频| 无码人妻丰满熟妇啪啪| 热久久美女精品天天吊色| 亚洲AV永久纯肉无码精品动漫| 免费久久人人爽人人爽AV| 日韩精品不卡一区二区三区 | 久久www免费人成看片中文| 极品无码人妻巨屁股系列| 99久久激情国产精品| 高潮潮喷奶水飞溅视频无码| 精品久久久久国产免费| 久久人与动人物a级毛片| 无码人妻一区二区三区免费N鬼沢| 成人乱码一区二区三区四区| 色综合久久精品中文字幕| 国产精品+日韩精品+在线播放| 亚洲丶国产丶欧美一区二区三区 | 69人妻精品中文字幕| 国产亚洲人成网站在线观看| 91午夜福利在线观看精品|