2009-07-17 3 views
0

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

ответ

0

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

2

Try Cache.Remove(), чтобы удалить объект из кэша ASP.NET:

Cache.Remove("CacheKey"); 

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

3

Вы путаете кеш браузера (на клиентской машине) с кешированием на стороне сервера.

0

Ваш метод поиска базы данных работает на сервере, который не имеет ничего общего с кешем браузера (поэтому очистка кеша браузера ничего не сделает).

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

Чтобы обновить элемент в кеше ASP.net, вам необходимо добавить код в метод извлечения базы данных. Это помогло бы, если вы могли бы разместить код, который у вас есть, но в основном это будет выглядеть так:

var data = DatabaseFetchStuff.... 
Cache["databaseInfoKey"] = data; 
+0

У меня есть метод BL. Сначала он проверяет общий список, который мы заполняем для списка записей. Если этот кешированный объект имеет значение NULL, он затем вызывает вызов нашего метода уровня БД для извлечения списка из БД. Проблема для меня в том, что если кешированный список уже заполнен, он никогда не вызывает мой метод БД. Я хочу, чтобы он вызвал мой метод БД, потому что я изменил базовый параметризованный sql позади него, и я хочу проверить результаты. Я мог бы прокомментировать чек для кэшированного объекта hte и заставить его вызвать мой метод DB insteed, чтобы получить записи, но просто любопытно по-другому сделать это. – PositiveGuy

+0

Я не использую объект кеша asp.net. Мы запускаем объект, созданный в памяти, простой. Опять же, наш метод BL проверяет этот объект в памяти, чтобы увидеть, было ли оно ранее заполнено данными. Так, например, он проверяет общий экземпляр списка для данных. IF null, пойдите, получите данные из базы данных, а затем снова заселите этот кешированный объект, так что в следующий раз, когда общий экземпляр списка в памяти будет иметь кэшированные данные. – PositiveGuy

+0

Вам действительно нужно опубликовать код. Если это ASP.Net, объект в памяти не будет сохраняться между запросами страницы. – womp

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