【问题标题】:Sitecore HTML cache and external data sourcesSitecore HTML 缓存和外部数据源
【发布时间】:2011-06-09 17:59:56
【问题描述】:

当您想要缓存一些依赖于外部数据(搜索索引等)的子布局时,您将如何处理这种情况?

示例如下:

  1. 更新内容后单击 在 Sitecore 中“发布”。
  2. HTML 缓存在之后自动清除 出版。
  3. 子布局被渲染并放入缓存中 第一个请求,但搜索索引 尚未更新。
  4. 搜索索引已更新。
  5. 在下一次缓存清理之前,子布局将显示缓存(过时)的日期。

有什么简单的方法可以解决这个问题吗?

目前我只有一个想法——在索引更新结束时触发缓存清理,但它可能由于多种原因而变得复杂。

【问题讨论】:

  • 是基于 URL 的缓存吗?如果您正在执行搜索,则应通过查询字符串发送输入数据,这应触发单独页面的缓存。
  • 不,假设它只是一个子布局,在网站的着陆页上显示前 5 个新闻项

标签: caching sitecore


【解决方案1】:

您可以缓存子布局并因参数而异,您可以在其中定义自定义参数。这些参数可以是来自 Lucene 的唯一字符串,例如上次重建的时间。

例如

<sc:sublayout ID="slNews" Path="NewsList.ascx" Cacheable="true" VaryByParm="true" runat="server" />

注意:Sitecore 代码有错字,是“VaryByParm”而不是“VaryByParam”

在 C# 中:

string lastIndexRebuild = GetLastRebuildTimeOfIndex().ToString();
slNews.Parameters = "lastIndexRebuild=" + lastIndexRebuild;

如果您可以以某种方式定义一种方法来确定上次重建索引的时间,则可以将其用作参数来根据索引的新鲜度或陈旧度来定义自定义缓存实例。您甚至可以添加其他参数,例如数据源等。

【讨论】:

    【解决方案2】:

    John West 最近发布了相关博文 -

    Schedule Expiration for Output Cache Entries with the Sitecore ASP.NET CMS

    您可以在子布局上设置缓存过期,在大多数情况下,当您的控件依赖于外部数据源时,这似乎是最简单的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      • 2011-03-29
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多