我想在运行时缓存中存储少量文本字符串
using Umbraco.Core.CacheHelper
即
ApplicationContext.Current.ApplicationCache.Runtime
但在搜索之后,我并不是100%清楚如何获得和设定价值 - 任何人都可以提供一个例子。
我想我可以使用get来设置值,但是如果设置了它我将如何更新它们?
我试过了
ApplicationContext.ApplicationCache.RuntimeCache.InsertCacheItem<runtimeCache>("myObject",rC);
我已经创建了一个类myObject和实例rC,但这会崩溃
编译器错误消息:CS0120:非静态字段,方法或属性'Umbraco.Core.ApplicationContext.ApplicationCache.get'
需要对象引用任何人都可以解释我哪里出错了吗?
答案 0 :(得分:0)
我相信你需要处理一个例如:
ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem("Key")
答案 1 :(得分:0)
旧帖子,但这是我设置它的方式:
您需要(2)方法。一个是端点(无论是API端点,Action等)。第二种方法是缓存实现将要调用的方法,只有当key
已经不在缓存中时,和/或(如果设置)超时已经过去。
根据您要求的内容,您的缓存密钥必须是唯一的。如果您正在缓存,例如,产品信息,而不是命名您的密钥,那么不同会给您带来不良数据,因为它总是会给您&#34;产品101&#34;。
public static List<ProductCategoryModel> GetPopularProducts(IPublishedContent homePage)
{
TimeSpan cacheLifetime = TimeSpan.MinValue;
TimeSpan.TryParse("06:00:00", out cacheLifetime);
var cachedItem = ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem($"GetPopularProducts", () => GetProductCategoryData(homePage.Descendants("Product").Where(x => x.GetPropertyValue<bool>("popularProduct")).OrderByDescending(x => x.UpdateDate).Take(15).ToList(), true), cacheLifetime);
return cachedItem as List<ProductCategoryModel>;
}
在方法内的第3行var cachedItem = .....
,GetCacheItem
的第一个参数是键名。在这种情况下,&#34; GetPopularProducts&#34;。第二个参数调用我上面解释的第二个方法,第三个参数是我们的缓存&#34;生命周期&#34;。
public static List<ProductCategoryModel> GetProductCategoryData(List<IPublishedContent> umbProductCategories, bool isProductTiles)
{ ....... // return some data }
当您拨打GetPopularProducts
方法时,您不必添加&#34;添加到&#34;缓存。该方法的这种变化既增加了高速缓存&#34;并根据我们的&#34;键&#34;检索并检索(如果保存并在缓存中找到)传递到GetCacheItem
。