私はSitecoreの役割でhtmlをキャッシュする最良の方法を見つけようとしています。私はVaryByParamを使用して考えていますが、私は静的に私のレンダリングをバインドしません。それらはすべて動的にページに追加されます。私はWebフォームを使用しています。どんな助けもありがたいです。ロールによるカスタムSitecoreキャッシュ
答えて
私はあなたの解決策の一部を使用して終了しました。 e Vary By Paramを有効にするだけでは簡単ではありませんでした。
まず私はその後、私はサイトコアのデフォルトのsublayoutを交換するSitecore.Web.UI.WebControls.Sublayoutから継承sublayoutをしなければならなかったRoleManager
public class RoleManager
{
private User currentUser;
public string GetReadRole(Item item)
{
currentUser = Sitecore.Context.User;
//int found = 0;
foreach (Role role in currentUser.Roles)
{
return role.LocalName; //return the role they are in
}
return "";
}
}
を実装する必要がありました。これで、すべて行うためにそこに残っていた
protected RoleManager roleManager = new RoleManager();
public override string GetCacheKey()
{
Sitecore.Sites.SiteContext site = Sitecore.Context.Site;
if ((Cacheable && ((site == null) || site.CacheHtml)) && !SkipCaching())
{
if (VaryByParm)
{
return base.GetCacheKey() + "_#userRole:" + roleManager.GetReadRole(this.GetItem());
}
return base.GetCacheKey();
}
return string.Empty;
}
は、すべてのコードは今Sitecore.Web.UI.SublayoutRenderingType
public override System.Web.UI.Control GetControl(NameValueCollection parameters, bool assert)
{
var sublayout = new RoleSublayout();
foreach (string key in parameters.Keys)
{
ReflectionUtil.SetProperty(sublayout, key, parameters[key]);
}
return sublayout;
}
から継承されたレンダリングパイプラインcalls.Thisクラスを置き換えるために、レンダリングsublayoutを追加しました行われ、ちょうどラインが変更web.configファイル に追加する必要が
<control template="sublayout" type="Sitecore.Web.UI.SublayoutRenderingType, Sitecore.Kernel" propertyMap="Path=path" />
だったし、今
です<control template="sublayout" type="YOURNAMESPACE.RoleSublayoutRenderingType, DLLNAME" propertyMap="Path=path" />
編集:これが機能する 、あなたはサイトコア
でこの記事をVeryByParamを有効にする必要がありますトンの答えのための http://sitecoreblog.alexshyba.com/sitecore_output_caching_kick_it_up_a_notch/
Sitecore htmlキャッシュの "Vary By Parm"は、レンダリングパラメータ用です。あなたは右varByキャッシュパラメータ(複数可)を選択し、コードの依存関係に依存
参照:
creating-sitecore-sublayouts-dynamically
、デフォルトのHTMLのキャッシュがあなたのロジックと一致しない場合には、あなたは重い部分にカスタムSitecoreキャッシングを使用するか、独自の "var By"を作成することができます。Sitecore Custom Cache
- 1. プログラムからキャッシュからアイテムのSitecoreキャッシュを消去する
- 2. SiteCoreキャッシング
- 3. Sitecoreロール階層
- 4. Sitecoreのロールのアクセスルールを取得する
- 5. (カスタム)WAI-ARIAのロール
- 6. カスタムSitecore Analytics用のポインタ
- 7. Sitecoreインスタンス間でSitecoreのセキュリティ(ユーザー/ドメイン/ロール/グループ)を移行しますか?
- 8. Wordpressカスタム投稿タイプのロール
- 9. sitecoreログインに必要な最低限のロールとアクセス権
- 10. ロールによるカスタムフィールドフィルタ - Wordpress
- 11. SitecoreバックエンドにカスタムJavascriptを挿入する方法
- 12. SitecoreのカスタムLuceneインデックス設定をSolrに変換する
- 13. Ubuntu 16.04にDocker CEをインストールするとネットワークがクラッシュする
- 14. Sitecore.FakeDBとSitecoreのコンテンツファセットによる検索
- 15. LuceneによるSitecoreインデックス付け
- 16. Sitecore Powershellのドロップダウンフィールドによる検索/フィルタ
- 17. 永続的にカスタムMesosロールにデプロイされたタスク
- 18. Sitecore特定の言語バージョンのページへのロールのアクセスを制限します
- 19. ロールごとにカスタムの「課題を作成」フォーム
- 20. ロール/権限によるセキュアなRESTコントローラ
- 21. Fioriのランチパッドによるロール管理
- 22. ロールによるアクセス時のスプリングセキュリティ403エラー
- 23. Windows認証 - カスタム条件でロールを設定する
- 24. liferayでロールのカスタム権限を追加する方法6.2 ga3
- 25. 特定のロールでセキュリティエディタを使用しているときにSitecoreクラッシュするアプリケーションプール
- 26. sitecore admin url/sitecoreを変更する
- 27. Sitecore WFFMカスタム保存アクションが呼び出されない
- 28. Sharepointコネクタを介して取り込まれたアイテムにSitecoreのロールを割り当てる
- 29. Sitecoreでは、HTMLエディタプロファイルをユーザーまたはロールに割り当てる方法を教えてください。
- 30. Sitecoreコンテンツ配信サーバーでカスタムLuceneインデックスを再構築するにはどうすればよいですか?
おかげで私を助けました。私は提供された記事の両方を読んで、私はまだ立ち往生しています。私は、sitecoreコンテンツエディタとそのリンクascxファイルでサブレイアウトを使用しています。私たちにはたくさんのユーザーがいますが、Althelete、Hobiestなどのような大きなグループに分かれています。これらのグループはすべて異なるコンテンツを参照しています。私はこれらの役割に依存して出力をキャッシュすることができますが、私の人生にとっては不可能です現在の設定でキャッシュパイプラインをインターセプトする方法を理解してください – KevinDev
ユーザ/グループロジックのコードサンプルを追加できますか?私はあなたが "レンダリングパラメータ"としてユーザーグループを追加するか、またはクエリ文字列に追加する必要があると思います。あなたはvarByキャッシュを使用することができます。他のユーザーはおそらくそれほどキャッシュヒットしません。その他のオプションCustom Sitecore Cache –
カスタムキャッシュソリューションをアンサーに追加します。 –