2016-12-05 70 views
0

我們有一個ASP.NET Web Forms Sitecore站點,我們使用Global.asax中的OutputCache指令,VaryByCustom屬性和添加的GetVaryByCustomString()方法來使用HTML輸出緩存。是否有可能從Global.asax.GetVaryByCustomString()獲取當前評估的控件?

是否有可能從GetVaryByCustomString()方法獲得當前控件的句柄?我們遇到了使用此方法輸出緩存的問題,並將多個控件實例添加到同一頁面。如果我有一個控件的句柄,我可以基於其Sitecore參數單獨緩存輸出(在這種情況下很重要),並使其與我們的其餘緩存策略很好地匹配。

回答

0

似乎無法從Global.asax中的GetVaryByCustomString()獲取當前評估的代碼。然而,由於我最初的目標是改變在同一頁面中出現多次的Sitecore控件的緩存輸出,我發現這可以通過列出頁面中的所有控件,然後在創建每個控件時遞增附加到請求上下文的計數器來實現高速緩存密鑰並將其附加到密鑰,因爲控件按確定性和可靠順序佈置。

0

我不知道爲什麼你會使用自定義代碼來做這個緩存。如果您的控件有一個Sublayout,那麼對於頁面上該控件/ Sublayout的每個實例,您可以通過轉到Presentation/Layout Details> Control Properties並向下​​滾動到Caching部分來激活緩存。在那裏你會檢查「Cacheable」和「Vary by Data」選項。

+0

首先,Sitecore緩存已知存在回發問題,不幸的是在整個代碼庫中廣泛使用。它也不適用於其他一些場景,而不會涉及不必要的細節。並不是我們不懂如何使用它,而是它有一些缺點。當我能夠在未來一年重做MVC中的整個站點時,結構將會有很大不同。 – Iucounu

相關問題