【问题标题】:Sitecore cacheable & CassetteSitecore 可缓存和盒式磁带
【发布时间】:2016-09-07 01:32:57
【问题描述】:

在我的渲染标记中,我使用Bundles.Reference 添加了对一系列 .less 文件的引用。当我在这个组件上启用缓存时,较少的文件不会被添加到<head>

@model Sitecore.Mvc.Presentation.RenderingModel
@{
    Bundles.Reference("~/resources/less/interior", "header");
}

【问题讨论】:

  • 如果启用缓存,代码将不再执行(在第一次之后),所以不再添加引用是正常的,不是吗?
  • 你是对的。我试图弄清楚如何缓存结果并保留当前的实现。

标签: sitecore sitecore8 sitecore-mvc


【解决方案1】:

将您的 Cassette 的 Renderings 移动到查看器渲染中。

@Bundles.RenderStylesheets("global")
@Bundles.RenderStylesheets("header")
@Bundles.RenderScripts("global")
@Bundles.RenderScripts("header")

将此渲染添加到 sitecore。如screenshot 所示。

将您的渲染添加到您的布局中。这将通过页面命中来缓存它。

@Html.Sitecore().Rendering("<your rendering definition item id>", new { Cacheable = true, CacheKey = "my_rendering", Cache_VaryByData = true })

【讨论】:

    【解决方案2】:

    您不能同时拥有缓存(输出缓存)并期望您的代码被执行。所以要么你缓存,但你需要把代码放在其他地方。或者你不(输出)缓存。但是(输出)缓存和执行代码是互斥的。

    【讨论】:

    • 当然可以。我正在研究解决方案。
    • 您添加了另一个渲染,因此您实际上像我说的那样将代码移到了“其他地方”.. ;)
    • 你最终是对的。我意识到了一半;-)。无论哪种方式,这都行得通,而且我们不必更改整个站点的 .less 实现。
    猜你喜欢
    • 2017-04-16
    • 2011-10-24
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多