Я проверяю 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?
Они похожи, но есть небольшая разница. Изучите документацию MSDN для OutputCacheProvider class
В примечаниях к« Добавить »далее говорится
"Если в кэше уже есть значение для указанного ключа, поставщик должен вернуть это значение. Поставщик не должен хранить данные {{1} } передается с использованием параметров метода Add . Метод Add сохраняет данные , если они еще не находятся в кеше . Если данные находятся в кэше, {{1 }} метод Add возвращает его "
Таким образом, для новых значений, которых еще нет в кэше, они будут вести себя идентично, но если значение уже существует, Set обновляет его, тогда как Add оставляет исходное значение без изменений.