.NET 4.0 реализации OutputCacheProvider

Я проверяю OutputCacheProvider в ASP.NET 4.0 и использую его для хранения моего выходного кэша в базу данных MongoDb. Я не могу понять, что цель Добавляет метод, который является одним из переопределенных методов для OutputCacheProvider. Добавить метод вызывается, когда Вам установили VaryByParam на что-то. Так, если у меня будет VaryByParam = "идентификатор" затем, то Добавить метод будет вызван.

Но после того, как Добавление Набора также вызывается, и я могу вставить в базу данных MongoDb в Методе установки.

public override void Set(string key, object entry, DateTime utcExpiry)
{
    // if there is something in the query use the path and query to generate the key 
    var url = HttpContext.Current.Request.Url;

    if (!String.IsNullOrEmpty(url.Query))
    {
        key = url.PathAndQuery;
    }

    Debug.WriteLine("Set(" + key + "," + entry + "," + utcExpiry + ")");  
    _service.Set(
        new CacheItem() { Key = MD5(key), Item = entry, Expires = utcExpiry }
    ); 
}

В Методе установки я использую PathAndQuery, чтобы получить параметрические усилители QueryString и затем сделать MD5 на ключе и сохранить его в базу данных MongoDb.

Кажется, что Добавить метод будет полезен, если я сделаю что-то как VaryByParam = "пользовательский" или что-то.

Кто-либо может пролить некоторый свет на Добавить метод OutputCacheProvider?

5
задан John Saunders 26 March 2010 в 06:26
поделиться

1 ответ

Они похожи, но есть небольшая разница. Изучите документацию MSDN для OutputCacheProvider class

  • Set - «Вставляет указанную запись в кэш вывода, перезаписывая запись, если она { {1}} уже кэшировано »
  • Добавить -« Вставляет указанную запись в кэш выходных ».

В примечаниях к« Добавить »далее говорится

"Если в кэше уже есть значение для указанного ключа, поставщик должен вернуть это значение. Поставщик не должен хранить данные {{1} } передается с использованием параметров метода Add . Метод Add сохраняет данные , если они еще не находятся в кеше . Если данные находятся в кэше, {{1 }} метод Add возвращает его "

Таким образом, для новых значений, которых еще нет в кэше, они будут вести себя идентично, но если значение уже существует, Set обновляет его, тогда как Add оставляет исходное значение без изменений.

8
ответ дан 14 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: