Помните, что если ваш кеш-ключ является «cacheValue», то любой вызов, который делается для этого, всегда будет одним и тем же «ударом». Ключ CacheSetting - это «уникальный идентификатор», который вы могли бы сказать, а Cache Depenency - это то, как он автоматически сбрасывается.
Так, например, сказать, что вы кэшировать функцию, которая добавляет два значения (не действительно нужно кэшировать, но для примера, в котором входные изменения)
Если у вас есть значение кэша для ваших «AddTwoValues (Int а, внутр б)»из
CacheHelper.Cache(cs => AddTwoValuesHelper(cs, a, b), new CacheSettings(10, "cacheValue"));
Первый вызов будет кэшировать значение вызова (скажем, вы передаете его 1 и 2), так что он кэширует„3“для ключа„cacheValue“
Второй вызов, если вы передадите его 3, 5, ключ кеша по-прежнему «cacheValue», поэтому он предположит, что это тот же вызов, что и первый, и возврат 3, и даже не пытайтесь добавить 3 + 5.
Обычно я добавляю любые параметры в кэш-ключ.
CacheHelper.Cache(cs => AddTwoValuesHelper(cs, a, b), new CacheSettings(10, string.Format("AddTwoValues|{0}|{1}", a, b)));
Таким образом, если я называю его с 1 и 2, в два раза, первый он обрабатывает и кэш «3» для ключа «AddTwoValues | 1 | 2», и когда вызывается снова ключ будет соответствовать так он просто вернет кешированное значение.
Если вы вызываете разные параметры, ключ кеша будет отличаться.
Имеют смысл?
Другие ответы конечно говорить о зависимости кэша в функции помощника:
if (cs.Cached)
{
cs.CacheDependency = CacheHelper.GetCacheDependency("cms.user|all");
}
которые определяют, как он автоматически удаляет (если вы cms.users | все как зависимость, когда пользователь изменил , этот кеш автоматически очищается)
Также в вашем примере вы передаете значение, которое вы хотите кэшировать, в метод getCachingValue. Данные, которые вы хотите сохранить в кеш, должны извлекаться из базы данных внутри этого метода. –