Как хранить данные в кеше, чтобы использовать его повторно? - PullRequest
7 голосов
/ 26 июля 2011

В моем приложении я использовал Общий обработчик для обслуживания запросов.

Мне нужен механизм, например, если первый раз, когда запрос приходит к обработчику, он делает запрос к серверу, а затем кэширует все данные, поэтому для следующего запроса, если следующий запрашиваемый код продукта существует в таблице данных кэша, он не должен сервер для извлечения данных снова .. он должен проверять данные только для данных.

Так вы можете объяснить мне, как я могу установить datatable в кэше .??

Ответы [ 4 ]

24 голосов
/ 26 июля 2011

Что-то в этом духе? ​​

public DataTable GetDataTableFromCacheOrDatabase()
{
   DataTable dataTable = HttpContext.Current.Cache["secret key"] as DataTable;
   if(dataTable == null)
   {
       dataTable = GetDataTableFromDatabase();
       HttpContext.Current.Cache["secret key"] = dataTable;
   }
   return dataTable;
}

Вам понадобится какой-то механизм для очистки таблицы данных из кэша, если она изменится.Например, вы можете использовать SqlCacheDependency .

По запросу, чтобы очистить кеш через час после добавления таблицы, вы должны сделать:

HttpContext.Current.Cache.Insert("secret key", dataTable, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);
4 голосов
/ 26 июля 2011

попробуйте

 DataTable mytable;
 String key = "key"
 if(HttpContext.Current.Cache[Key] ==null)
 {
        mytable = GetDTFromDB();
        if(mytable.Rows.Count > 0)
            HttpContext.Current.Cache.Insert(strKey, mytable, Nothing, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration);
    else
        mytable = HttpContext.Current.Cache[strKey];
  }
1 голос
/ 26 июля 2011

вы можете использовать:

HttpContext.Current.Cache["CacheDataTableID"] = datatableInstance;
0 голосов
/ 26 июля 2011

вы можете написать свойство для вашей таблицы, как

public DataTable CachedTable  { get{ 
      if(Cache["CachedTable"] == null) 
     { 
       Cache["CachedTable"]= //get from databse 
      } 
      return Cache["CachedTable"]; 
    }  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...