在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"}
类中看到解析该匿名对象参数(RenderingCachingDefinition
,Cacheable
等)的所有其他属性。
当然,这可能解析得很好,而Sitecore只是不对结果值做任何事情。但我遵循VaryByParam
属性,根据我的阅读,它准确地用于在缓存上设置超时。
答案 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