Cache.Insert перекрывает предыдущее AbsoluteExpiration? - PullRequest
2 голосов
/ 27 июня 2010

Если у меня есть элемент, который уже существует в моем ASP.NET Cache ... и я просто хочу обновить значение этого кэшированного элемента .. не значение Absolute Expiry или Cache Dependencies и т. д. больше ничего, НО значение ... могу ли я использовать Cache.Insert?

Если нет, могу ли я в любом случае получить все эти значения для кэшированного элемента ... и затем повторно использовать их при выполнении Cache.Insert?

Приветствия:)

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Вы можете создать функции для обработки добавления нового значения или обновления существующего следующим образом:

private static Cache cachingControl;

public void UpdateToCache(object key, object updateValue)
{
    try
    {
        if (key != null)
        {
            cachingControl.Remove(key);
            AddToCache(key, updateValue);
        }
    }
    catch (Exception ex)
    {
        //**ToDo[Logging]** Code for logging
    }
}

public void AddToCache(object key, object saveValue)
{
    try
    {
        if (key != null)
        {
            cachingControl.Insert(key, saveValue,null,System.Web.Caching.Cache.NoAbsoluteExpiration,TimeSpan.FromMinutes(30));
        }
    }
    catch (Exception ex)
    {
        //**ToDo[Logging]** Code for logging
    }
}

Здесь вы можете использовать функцию AddToCache для вставки новых значений и функцию UpdateToCache для обновления новых значений в существующий ключ.(Это в основном включает в себя удаление существующего ключа и добавление его снова с обновленными значениями.)

Нет прямого способа обновить существующие значения.

0 голосов
/ 27 июня 2010

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

С MSDN :

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...