2012-05-31 2 views
2

Я пытаюсь реализовать кэширование в своей программе. У меня есть веб-приложение, которое предоставляет пользователю доступ к некоторым учебным курсам. Когда пользователь входит в систему, я аутентифицирую его из нашей базы данных. Теперь, если доступ к другому курсу из списка, я не хочу возвращаться в базу данных. Вместо этого я хочу сохранить значение в кеше, давая сказать 20 минут. Программа должна 1) Аутентифицируйте пользователя и дайте ему доступ к курсу. Если он изменит курс, программа должна выглядеть в кеше. если идентификатор пользователя существует, пусть он получает доступ к курсу, не возвращаясь к серверу. 2) Предоставьте механизм, который, если через 20 минут пользователь все еще находится в системе, автоматически обновляет time.so, что пользователь не вышел из системы. Я пытался что-то вроде этогоКэширование в C# (ASP.NET)

Cache ch = new Cache(); 
ch.Add("key","value); 

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

+0

Возможный дубликат [ASP.Net Caching] (http://stackoverflow.com/questions/1130762/asp-net-caching) –

ответ

2

Ну это, как я использую его:

/// <summary> 
/// Get Data 
/// </summary> 
/// <returns>data</returns> 
public static ElementOut GetData() 
{ 
    //function return value 
    ElementOut functionReturnValue = new ElementOut(); 

    try 
    { 
     string key = "data"; 
     if (HttpRuntime.Cache[key] == null) 
     { 
      //fetch data 
      var data = CreateBLLAdapter().GetData(); 

      //validate data 
      if (data == null) throw new Exception("data is empty!"); 

      //set cache to 12 hours 
      DateTime timeToExpire = DateTime.Now.AddHours(12); 

      //set cache 
      HttpRuntime.Cache.Insert(key, data, null, timeToExpire, Cache.NoSlidingExpiration); 
     } 

     //set return from cache 
     functionReturnValue = (ElementOut)HttpRuntime.Cache[key]; 

    } 
    catch (Exception ex) 
    { 
     //Log.WriteServerErrorLog(ex); 
    } 

    return functionReturnValue; 
} 
0

Если Вы развиваете в ASP.NET, вы можете просто использовать ASP.NET session store, который хранит значения для каждого пользователя, пока его сеанс длится (который является по умолчанию 20 минут от его последнего действия)

1

Использование Cache текущего контекста HTTP:

HttpContext.Current.Cache

Описание: Когда новый запрос HTTP приходит, прикладные процессы, которые запрашивают в трубопроводе, известного как Request Process Pipeline, то есть , он выполняет некоторые действия по запросу один за другим, прежде чем передать запрос обработчику для его обработки.

Одним из действий, выполняемых ASP.NET, является загрузка сеанса и данных кеша на основе некоторых параметров.

HttpContext.Current.Cache - это загруженный кэш, и вы можете его использовать. Затем, когда вы храните что-то в этом кеше, ASP.NET снова берет на себя ответственность за сохранение этого кеша и сохранение его в следующем HTTP-запросе.

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

Смежные вопросы