如何调整Sitecore中静态绑定渲染的缓存持续时间?

时间:2016-03-28 16:13:07

标签: sitecore

在Sitecore中,我的剃刀中有一个静态绑定的渲染器:

@Html.Sitecore().Rendering("[item ID]")

这很好用,但我想缓存。所以:

@Html.Sitecore().Rendering("[item ID]", new { Cacheable = true } )

这也有效,并且似乎缓存大约60秒,我理解这是默认值。

我想缓存20分钟(1200秒),但我找不到任何方法来指定它。 Rendering的第二个参数是一个匿名对象,因此Intellisense没有帮助。我试过了:

new { Cacheable = true, Duration = 1200 }
new { Cacheable = true, Cache_Duration = 1200 } // Someone said Cache_ was the trick. It wasn't.

改变这些渲染的缓存持续时间的设置是什么?

更新

我反思了一点,但无济于事。该匿名对象的属性将被迭代并用于设置Rendering.RenderingProperties上的值。这是一个键/值数据结构,由字符串键控,因此任何缓存设置都不再是强类型的,因此我的反射路径很冷。

另一次更新

@ sitecore-climber做了更多反思,找到了一个名为RenderingCachingDefiniton的{​​{1}}属性,它似乎将Timeout键的值解析为Cache_Timeout个对象

然而,我对此的实际测试...

Timespan

...似乎没有改变60秒的缓存超时。这很奇怪,因为您可以在new { Cacheable = true, Cache_Timeout = "00:20:00"} 类中看到解析该匿名对象参数(RenderingCachingDefinitionCacheable等)的所有其他属性。

当然,这可能解析得很好,而Sitecore只是不对结果值做任何事情。但我遵循VaryByParam属性,根据我的阅读,它准确地用于在缓存上设置超时。

1 个答案:

答案 0 :(得分:1)

我尝试使用Sitecore 8.1解决方案,使用

工作正常

@ Html.Sitecore()。渲染(" {240A3624-8600-4A7B-8C07-5846A673F1F0}",new {Cacheable = true,Cache_Timeout =" 00:20:00&# 34;})

在我的观察容器上,我有:

 @Html.Sitecore().Rendering("{240A3624-8600-4A7B-8C07-5846A673F1F0}")

 @Html.Sitecore().Rendering("{240A3624-8600-4A7B-8C07-5846A673F1F0}", new { Cacheable = true,Cache_Timeout = "00:20:00" } )

我的观点很简单

@using Sitecore.Mvc
<div>
<h1>
    @Html.Sitecore().Field("title")
</h1>
<div>
    @Html.Sitecore().Field("text")
    @System.DateTime.Now.Second
</div>
</div>

但缓存只是在普通模式下工作,而不是在体验编辑器或页面编辑器上。您是否尝试发布并检查您的网站?

请查看我上传的视频:https://www.dropbox.com/s/57s5x0zw7yr8lyb/VideoAvi.avi?dl=0