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

如何调整Sitecore中静态绑定渲染的缓存持续时间?,sitecore,Sitecore,在Sitecore中,我的Razor中有一个静态绑定渲染器: @Html.Sitecore().Rendering("[item ID]") 这很好,但我想缓存。因此: @Html.Sitecore().Rendering("[item ID]", new { Cacheable = true } ) 这也是可行的,而且似乎可以缓存大约60秒,我知道这是默认值 我想缓存20分钟(1200秒),但我找不到任何方法来指定这一点。Rendering的第二个参数是匿名对象,因此Intellisens

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

@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攀登者进行了更多的思考,发现了名为
Timeout
RenderingCachingDefiniton
属性,该属性似乎将
Cache\u Timeout
键的值解析为
Timespan
对象

然而,我对这个的实际测试

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


当然,这可能很好地解析了,Sitecore对结果值没有任何作用。但我遵循了
Timeout
属性,根据我的阅读,它准确地用于设置缓存超时。

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

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

在我的视图容器上,我有:

 @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>
@使用Sitecore.Mvc
@Html.Sitecore()字段(“标题”)
@Html.Sitecore()字段(“文本”)
@System.DateTime.Now.Second
但缓存只是在正常模式下工作,而不是在体验编辑器或页面编辑器上。您是否尝试发布和检查您的网站


请检查我上传的视频:

我认为它不是现成的。你能检查一下这个解决方案吗。你能试试缓存超时吗?我反编译代码,TimeOut属性如下所示:TimeSpan结果;if(TimeSpan.TryParse(this.Rendering[“Cache_Timeout”],out result))返回结果;是的,我找到了相同的代码。我试过了,但似乎不起作用。我把
00:20:00
放在那里,应该精确解析到20分钟。我的测试过程:我的Razor模板中有一行
@DateTime.Now.ToLongTimeString()
。我可以一次又一次地点击刷新,但它仍然大约每60秒改变一次。我想知道这是否必须在管道中完成?我也尝试过,但我不确定静态绑定的项目是否会进入管道。这听起来很奇怪,我知道,但在管道中插入了一个断点,然后看着一切顺利通过。据我所知,我的四个静态绑定渲染器从未通过。你是如何验证它是否正常工作的?我不太理解视频。我有@Html.Sitecore().Rendering({240A3624-8600-4A7B-8C07-5846a673f0}”)@Html.Sitecore().Rendering({240A3624-8600-4A7B-8C07-5846a673f0}),新的{Cacheable=true,Cache_Timeout=“00:20:00})如果我刷新页面,你可以在第一次渲染时看到,秒数在变化,在第二次查看时,秒数是相同的。是的,但它会缓存20分钟吗?它将缓存60秒(如果
Cacheable
设置为
true
,则为默认值)。15分钟后回来,看看缓存是否有效。我试过你的案子,对我来说效果很好。如果有人正在发布您的项目,请小心,缓存已清除。感谢您测试此项。我必须有一个更深层次的问题与缓存。也许限制设定得太低了?也许事情会继续在后台发布?不确定,但这很有帮助。再次感谢。