我想通過Sitecore角色來緩存html的最佳方式。我在想通過使用VaryByParam,但我沒有靜態綁定我的渲染。它們全部動態添加到頁面中。我正在使用Web表單,任何幫助將不勝感激按角色定製Sitecore緩存
1
A
回答
2
因此,我確實最終使用了部分解決方案1月號我添加了答案因爲e它並不像啓用Vary By Param那麼簡單。
首先,我必須實現一個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 "";
}
}
然後我不得不作出從Sitecore.Web.UI.WebControls.Sublayout繼承替換Sitecore的默認sublayout一個sublayout。
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;
}
現在都還剩下要做的就是增加一個sublayout渲染,以取代從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;
}
繼承了渲染管道調用。這類的所有代碼現在完成,只需要添加到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在Sitecore的
這篇文章幫助我噸 http://sitecoreblog.alexshyba.com/sitecore_output_caching_kick_it_up_a_notch/
1
Sitecore html緩存的「Vary By Parm」用於渲染參數。取決於你的代碼依賴您選擇合適的varBy緩存參數(S)
參見:
creating-sitecore-sublayouts-dynamically
有時候,如果默認HTML緩存不是以配合你的邏輯,你可以使用自定義的Sitecore緩存重件或創建自己的「var By」請參閱Sitecore Custom Cache
相關問題
- 1. Sitecore角色安全
- 2. Sitecore域和角色
- 3. sitecore RSS緩存
- 4. Sitecore - 限制用戶的角色
- 5. cacheRolesInCookie未緩存角色
- 6. Akka緩存角色調用?
- 7. ClientRoleProvider和角色緩存
- 8. Azure角色緩存非常緩慢
- 9. Sitecore的XSL緩存
- 10. 確定哪個角色限制訪問Sitecore
- 11. Sitecore限制角色訪問頁面的特定語言版本
- 12. Sitecore獲取所有角色
- 13. Sitecore角色層次結構
- 14. 用戶角色的Sitecore Droplink
- 15. Sitecore緩存和變化
- 16. Sitecore清除緩存編程
- 17. ASP.NET問題在Cookie中緩存角色
- 18. 角色轉換後WSO2 Identity Server緩存
- 19. Windows Azure角色緩存vs共享緩存
- 20. Azure在角色緩存中的緩存主機配置
- 21. AS3 3D角色定製?
- 22. Sitecore CMS創建新用戶和角色
- 23. sitecore角色和工作流程
- 24. Sitecore用戶角色和克隆
- 25. 獲取訪問Sitecore角色的規則
- 26. sitecore用戶域和角色返回null
- 27. Sitecore的允許角色來發布僅
- 28. Sitecore:允許用戶/角色發佈
- 29. 實現角色內緩存共同定位並一起專用
- 30. CachedDbAuthManager清除用戶特定角色的緩存
謝謝回答。我閱讀了所提供的兩篇文章,但仍然陷入困境。我在sitecore內容編輯器中使用子佈局,以及那些鏈接的ascx文件。我們有很多用戶,但他們被分成更大的組,如Althelete,Hobiest等。這些組都看到不同的內容。我想能夠緩存依賴於這些角色的輸出,但不能爲我的生活弄清楚如何攔截使用當前設置的緩存管道我有 – KevinDev
您可以添加您的用戶/組邏輯的代碼示例。我想你需要將用戶組添加爲「渲染參數」或將其添加到查詢字符串中。比你可以使用這個varBy緩存.. otherwish var由用戶可能較小的緩存命中。其他選項自定義Sitecore緩存 –
將自定義緩存解決方案添加到答案中。 –