C# 使用SharePoint存储会话状态的选项
我已经为我们的SharePoint网站编写了一个用户控件,它构建了一个HTML菜单-这已经被注入到母版页中,因此最终在所有使用它的页面上呈现。在生成这个HTML时,会进行一些计算开销非常大的调用,而缓存是保持页面加载快速的逻辑选择。到目前为止,HttpRuntime缓存在这方面工作得非常好 现在,我们正在开发该用户控件的1.1版,一个新的需求已经悄然出现,允许每个用户自定义菜单。这不是问题,除了我不能再盲目地使用HttpRuntime缓存对象——或者至少,如果不预先设置用户id并使其特定于用户,就不能使用它 理想情况下,我希望能够使用ASP.NET会话集合来存储特定于用户的代码。如果用户不活跃,我当然不需要它挂在缓存中,而且这实际上是特定于会话的数据。我已经查看了几个选项,包括在ViewState中使用它或启用会话管理(默认情况下,它是禁用的)。但我对他们两个都不太满意C# 使用SharePoint存储会话状态的选项,c#,sharepoint,moss,wss,C#,Sharepoint,Moss,Wss,我已经为我们的SharePoint网站编写了一个用户控件,它构建了一个HTML菜单-这已经被注入到母版页中,因此最终在所有使用它的页面上呈现。在生成这个HTML时,会进行一些计算开销非常大的调用,而缓存是保持页面加载快速的逻辑选择。到目前为止,HttpRuntime缓存在这方面工作得非常好 现在,我们正在开发该用户控件的1.1版,一个新的需求已经悄然出现,允许每个用户自定义菜单。这不是问题,除了我不能再盲目地使用HttpRuntime缓存对象——或者至少,如果不预先设置用户id并使其特定于用户,
所以我的问题是:我应该如何在每个用户的基础上缓存这样的输出?目前,我的最佳选择似乎是将用户id包含在缓存密钥中,并给它一个滑动过期时间。我在一个相当大的MOSS 2007部署(1000多个用户)上使用ViewState来定制Web部件和页面,我根本没有注意到对部署性能的不利影响
我的建议是使用它。我不明白为什么您不使用基于每个用户(个人)的内置web部件缓存机制来实现这一点-这正是它的设计目的
值得指出的是,我认为提供的“日终”链接与SPS2003相关,而不是与MOSS2007相关-afaik MOSS与Asp.Net的集成意味着上述问题在MOSS中不是问题。我认为您可能过于重视启用会话状态对性能的影响。不要依赖于一种观点来描述会话的使用,你应该自己测试它的性能来衡量它对你特定站点的影响。在这个链接的示例中,他们说“如果有997个站点不需要会话,为什么要在您只需要3个站点上启用会话?”。好消息,除非你没有在某些页面上显示菜单,否则你需要在每一页上显示菜单。亲自测试并确定影响;它应该是最小的。@Nissan Fan:你应该回答这个问题。我不是在开发web部件-这是一个用户控件,放在CONTROLTEMPLATES文件夹中。接受这个答案,因为它最接近Nissan Fan留下的评论,并且声明了类似的内容。