我为我们的SharePoint网站编写了一个用户控件,用于构建HTML菜单 - 这已经注入到母版页中,因此最终会在使用它的所有页面上呈现。在生成此HTML时,有一些计算成本很高的调用,而缓存是保持页面加载速度的合理选择。到目前为止,HttpRuntime Cache已经完美地运行了。
现在我们正在着手使用这个用户控件的1.1版本,并且新的需求已经悄悄进入,以允许每个用户自定义菜单。没有问题,除了我不能再盲目地使用HttpRuntime Cache对象 - 或者至少不使用它而不用前面的用户ID并使其具有用户特定性。
理想情况下,我希望能够使用ASP.NET Session集合来存储特定于用户的代码。如果用户不活动,我当然不需要在缓存中闲逛,而且,这确实是一种特定于会话的数据。我已经查看了几个选项,包括它在ViewState中或启用会话管理(默认情况下它被禁用a good reason)。但我对他们中的任何一个都不满意。
所以我的问题是:我应该如何基于每个用户来缓存这样的输出?现在,我最好的选择似乎是在Cache键中包含他们的用户ID,并给它一个滑动到期。
答案 0 :(得分:2)
值得指出的是,我认为提供的“结束日期”链接与SPS2003而非MOSS2007相关 - 因为MOSS与Asp.Net的集成意味着上述问题在MOSS中不是问题。
答案 1 :(得分:1)
我在一个相当大的MOSS 2007部署(1000多个用户)上使用ViewState来定制webparts和页面,我没有注意到对部署性能的不利影响。
使用它,是我的建议。
答案 2 :(得分:0)
我不明白为什么你不会在每个用户的基础上使用内置于Web部件缓存机制的SharePoints(个人) - 它正是它的设计目的。
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.webpart.partcacheread.aspx