Umbraco 7使用运行时缓存



我想在运行时缓存中存储少量文本字符串

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"需要对象引用

有人能解释一下我哪里错了吗?

我认为您需要处理一个实例,例如:

ApplicationContext.Current.ApplicationCache.RuntimeCache.GetCacheItem("Key")

旧帖子,但我是这样设置的:

你需要(2)种方法。一个是端点(无论是API端点、Action等)。第二种方法是缓存实现要调用的方法,仅当key不在缓存中时,和/或(如果设置)超时已过。

根据您的请求,您的缓存密钥必须是唯一的。例如,如果你正在缓存产品信息,不给密钥命名不同的密钥会给你带来坏数据,因为它总是会给你"产品101"。

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的第一个参数是密钥名称。在本例中,为"GetPopularProducts"。第二个参数调用我上面解释的第二个方法,第三个参数是我们的缓存"生存期"。

public static List<ProductCategoryModel> GetProductCategoryData(List<IPublishedContent> umbProductCategories, bool isProductTiles)
{ ....... // return some data }

当您调用GetPopularProducts方法时,您不必"添加"到缓存中。该方法的这种变体既将"添加到缓存",又根据传递到GetCacheItem中的"密钥"(如果保存并在缓存中找到)进行检索。

相关内容

  • 没有找到相关文章

最新更新