Я пытаюсь реализовать некоторый подход кэширования на моей странице MVC следующим образом.Кэширующий подход к статическим переменным и MVC
private static List<T> DATA = new List<T>()
public ActionResult Index()
{
if(DATA.Count()==0)
{
FillGlobalVaribles();
}
}
public JsonResult GC()
{
DATA = new List<T>();
}
private static FillGlobalVariables()
{
DATA = entityObject.foo.ToList();
}
public JsonResult ListItems(string FilterString)
{
DATA.OrderBy(c=>c.ID).ToList();
return Json(new {Result="OK",RecordSet = Data});
}
Я заполняю свою статическую переменную на моем методе индекса контроллера. И если пользователь сделает некоторые сортировки, некоторые фильтры будут применяться к переменной DATA.
И я реализую пользовательский метод GC, если пользователь меняет страницу (щелкните другой тег) ajax вызовите метод GC и очистите переменные.
Так что мой вопрос,
если переменная DATA была заполнены и применяются некоторые фильтрации (некоторые примеры: чистые переменные данные содержат 3000 элементов и результат фильтрации 200 результата), а другой пользователь пришел к переменной странице DATA содержит 200 пунктов , Но я хочу создать новые экземпляры объектов для каждого пользователя.
Hi. Спасибо, что ответили на мой вопрос. Я пробовал использовать функцию lock {}, но я думаю, что это не работает. Как я могу использовать оператор блокировки? Можете ли вы дать небольшой образец? Я пробовал redis, но я не понимаю принцип работы redis. – Toygar
Hi Toygar. Как правило, вы намного лучше избегаете статики для MVC, если сможете это сделать. Я не могу сказать, что никогда не использовал их, но сначала должен искать другие способы. Я отредактировал свой первоначальный ответ, чтобы включить небольшой пример использования Redis - обратите внимание, что вы должны сначала установить его. –
Привет, Adam, я уже знаю, что у него есть выбор для обмена. Но как я могу сохранить свой список на redis? Как redis.push (список данных); –
Toygar