【问题标题】:How to update cache for a Sitecore Web Api output upon the index update如何在索引更新时更新 Sitecore Web Api 输出的缓存
【发布时间】:2016-01-27 12:04:32
【问题描述】:

我正在实施 Sitecore 8 Web Api。确切地说,我在 Sitecore Services Infrastructre 中使用 ServiceApiController。我想知道如何缓存来自这个控制器的 JSON 输出,以便只有在我从中获取数据的 lucene 索引被重建时它才会更新?

我没有将此控制器注册为控制器渲染,因为显然我们不需要这样做,而且它可以开箱即用。我刚刚通过 jQuery 读取 ajax 调用的 JSON 输出,并且 javascript 代码和 HTML 标记位于 MVC 视图渲染中。我想在视图渲染上设置缓存是没有意义的。不是吗?

我该怎么办?

【问题讨论】:

    标签: sitecore sitecore8 sitecore-mvc


    【解决方案1】:

    最好的选择是使用 HtmlCache 并将数据存储在那里。此缓存会在发布时完全清除,因此使用它是有意义的。

    您可以使用SetHtml 方法将条目添加到缓存中:

    var cache = Sitecore.Caching.CacheManager.GetHtmlCache(Sitecore.Context.Site);
    var json = cache.GetHtml("mycachekey");
    if (string.IsNullOrWhiteSpace(json))
    {
        var json = // build your json output here
        cache.SetHtml("mycachekey", jsonValue);
    }
    return json;
    

    【讨论】:

    • 谢谢理查德。我虽然有某种设施,可以在 ServiceApiController 级别上使用。所以,我们可以只使用自定义缓存,对吗?顺便说一句,如果我只是在后端重建索引而不是发布呢?
    • 如果您使用自定义缓存,您需要挂钩publish:endpublish:end:remote 事件并在自定义代码中清除该缓存。如果您使用将被 Sitecore 清除的HtmlCache
    • 如果您手动重建索引,则必须自己清除缓存,方法是在重建后运行发布或使用 /admin/cache.aspx 管理页面。
    猜你喜欢
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多