2009-07-27 26 views
1

我已經爲我們的SharePoint網站編寫了一個用戶控件,用於構建HTML菜單 - 這已被注入到母版頁中,並最終在所有使用它的頁面上呈現。在生成這個HTML時,有一些相當昂貴的計算調用,並且緩存是保持頁面加載速度的合理選擇。到目前爲止,HttpRuntime Cache已經完美地工作了。用於存儲會話狀態與SharePoint的選項

現在我們正在着手對這個用戶控件的1.1版本進行研究,並且新的要求已經悄悄進入允許每個用戶定製菜單。這不是一個問題,除了我不能再盲目地使用HttpRuntime Cache對象 - 或者至少不使用它,沒有預先指定用戶ID並使其成爲特定用戶。

理想情況下,我希望能夠使用ASP.NET會話集合來存儲用戶特定的代碼。如果用戶不活躍,我肯定不需要將它掛在緩存中,而且這實際上是一種特定於會話的數據。我查看了幾個選項,包括它在ViewState中或啓用會話管理(默認情況下,它被禁用爲​​)。但我其中任何一個人都不滿意。

所以我的問題是:我應該如何在每個用戶的基礎上緩存這樣的輸出?現在,我最好的選擇似乎是將他們的用戶ID包含在緩存鍵中,並給它一個滑動過期。

+5

我認爲你可能會認真考慮啓用會話狀態對性能的影響。不要依賴一種描述使用會話的「結束日期」觀點的觀點,而應該通過性能測試來衡量對特定網站的影響。在這個鏈接的例子中,他們說:「爲什麼在一個網站上啓用會話,如果有997個網站不需要它,那麼你只需要它3個地方?」。好消息是,除非你在每個頁面上都不需要在某些頁面上顯示菜單。自己測試並確定影響;它應該是最小的。 – 2009-07-27 18:07:30

+1

@Nissan Fan:你應該讓這個答案。 – 2009-07-27 20:06:38

回答

2

值得指出的是,我認爲此鏈接提供「天結束」是相關SPS2003不MOSS2007 - AFAIK MOSS融入Asp.Net意味着所提到的問題不是在MOSS問題。

1

我在一個相當大的MOSS 2007部署(1000多個用戶)上使用ViewState來實現自定義Web部件和頁面,而且我沒有注意到對部署性能的不利影響。

只是使用它,是我的建議。