我的任务是找出哪些Sublayouts已启用缓存。我不是在谈论子布局上的缓存 - 我的意思是在渲染参数中设置的子布局的每个单独实例上的缓存。
以下是我目前所做的事情:
我的问题是我看到的'Cachable'设置是Sublayout中的一个设置(在Sitecore中的Layout> Sublayouts下),而不是我在我的项目上的子布局实例上设置的那个(My Item) >演示文稿>详细信息>点击控制)
我的代码是独立编写的
1号没问题 - 这就是我为每件物品做的事情:
2)
RenderingReference[] renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, true);
3)
foreach (RenderingReference r in renderings)
4)
bool cacheable = r.RenderingItem.Caching.Cacheable;
似乎我错过了一个步骤,我获得了特定于每个子布局的渲染参数。但是,从我已阅读的指南中看来,您需要子布局本身才能访问这些参数。我找不到从项目或渲染引用中获取子布局的方法(可能是有充分理由的?)。任何人都可以帮我进步吗?
答案 0 :(得分:4)
我的任务是找出我们的Sublayouts中有哪些 缓存打开。我不是在讨论sublayout上的缓存 - 我的意思是在渲染参数中设置的子布局的每个单独实例上的缓存。
通过引用r.RenderingItem
,您将访问渲染的定义项,而不是演示文稿详细信息中该子布局的“实例”。
要获取演示文稿详细信息的每个实例的缓存,您可以使用:
RenderingReference[] renderings = Sitecore.Context.Item.Visualization.GetRenderings(Sitecore.Context.Device, true);
foreach (var renderingReference in renderings)
{
// var isDefinitionItemCacheable = renderingReference.RenderingItem.Caching.Cacheable;
var isInstanceCacheable = renderingReference.Settings.Caching.Cacheable;
}
或..
var sublayout = Parent as Sublayout;
if (sublayout != null)
{
var cacheable = sublayout.Cacheable;
}
答案 1 :(得分:2)
确定这一点的另一种方法是转到/sitecore/admin/stats.aspx
页面并检查渲染次数与缓存命中次数。因此,请查看以 Sublayout:开头的行,并查看Cache列是否大于0.如果大于0,那么这些是加载缓存条目的时间。如果它始终为0,那么它不会设置为缓存。