gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:12:06 26 4
gpt4 key购买 nike

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

@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 进行了更多反射(reflection),发现 RenderingCachingDefiniton 的一个名为 Timeout 的属性似乎可以解析 Cache_Timeout 的值键入 Timespan 对象。

但是,我对此的实际测试...

new { Cacheable = true, Cache_Timeout = "00:20:00"}

...似乎没有改变 60 秒的缓存超时。这很奇怪,因为您可以在 RenderingCachingDefinition 类中看到解析该匿名对象参数的所有其他属性(CacheableVaryByParam 等) .)。

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

最佳答案

我尝试了 Sitecore 8.1 解决方案,并且运行良好

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

在我的 View 容器上,我有:

 @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

关于sitecore - 如何调整 Sitecore 中静态绑定(bind)渲染的缓存持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36266224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com