2

私は、キャッシュが有効になっているサブレイアウトを見つけることを任されています。サブレイアウトでのキャッシングについて話しているのではありません。つまり、レンダリング パラメータで設定された、そのサブレイアウトの個々のインスタンスでのキャッシングです。

これが私が現在行っていることです:

  1. 各アイテムを見て、サイトのツリー全体を解析します
  2. 各アイテムのレンダリングを取得する
  3. 各レンダリングを循環
  4. 「キャッシュ」セクションで「キャッシュ可能」が設定されているかどうかを確認します

私の問題は、表示されている 'Cachable' 設定がサブレイアウト (Sitecore の [レイアウト] > [サブレイアウト] の下) で設定されたものであり、アイテムのサブレイアウトのインスタンス ([マイ アイテム] > [プレゼンテーション] > [詳細]) で設定したものではないことです。 > クリック コントロール)

私のコードはスタンドアロンで書かれています

番号 1 は問題ありません。各項目に対して行うことは次のとおりです。

2)

RenderingReference[] renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, true);

3)

foreach (RenderingReference r in renderings)

4)

bool cacheable = r.RenderingItem.Caching.Cacheable;

各サブレイアウトに固有のレンダリング パラメータを取得する手順がないようです。ただし、私が読んだガイドから、これらのパラメーターにアクセスするにはサブレイアウト自体が必要なようです。アイテムまたはレンダリング参照からサブレイアウトを取得する方法が見つかりません (おそらく正当な理由がありますか?)。誰でも私が進歩するのを助けることができますか?

サブレイアウトからレンダリング パラメータを取得する

4

2 に答える 2

4

私は、キャッシュが有効になっているサブレイアウトを見つけることを任されています。サブレイアウトでのキャッシングについて話しているのではありません。つまり、レンダリング パラメータで設定された、そのサブレイアウトの個々のインスタンスでのキャッシングです。

を参照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;
}
于 2013-01-31T17:54:10.110 に答える
2

これを判断する別の方法は、/sitecore/admin/stats.aspxページに移動して、レンダリング数とキャッシュヒット数を確認することです。したがって、Sublayout:で始まる行を見て、Cache列が0より大きいかどうかを確認します。0より大きい場合は、キャッシュされたエントリがロードされた回数です。常に0の場合、キャッシュに設定されていません。

于 2013-01-31T19:22:29.583 に答える