SPS中WebPart加缓存
在企业级应用中,特别是对大数据量,大访问量的系统中,Cache是非常重要的。
最近一个项目数据量非常之大,访问量也很大,这就要系统应对考验了。加缓存是非常重要的一步
由于此系统SPS+MCMS开发,做多门户的系统,在SPS中写WEBPART大家都知道吧,但是我相信缓存大家
可能都没有加过。在网上查了很多资料,都没有找着相关的代码,于是就查其API吧。。
一看,其实非常简单,而且效率非常之高
WebPart有一个缓存类Microsoft.SharePoint.Portal.WebControls.CacheableWebPart
,直接从该类中派生出来,然后在RenderWebpart时先设置缓存时间,CacheKEY可以设置根据不同的参数来加载不一样的缓存
1protected override void RenderWebPart(HtmlTextWriter output)
2{
3
4
5 this.CacheTimeout=int.Parse(System.Configuration.ConfigurationSettings.AppSettings["CacheTimeOut"]);
6 //this.CachePerUser=true; true只对某一用户有效,false 所有用户有效
7
8 if(!RenderCachedOutput(ref output)) //输出缓存,如果不成功的话,就重新加载
9 {
10 this.RenderMyWebPart(output); //实际的output内容
11 StoreCachedOutput(ref output);//加载后将其缓存起来
12 }
13}
14
15protected override string CacheKey
16{
17 get
18 {
19 if(Page.Request.QueryString["ChannelPath"]!=null||Page.Request.QueryString["ChannelPath"]!="")
20 {
21 return "New"+Page.Request.QueryString["ChannelPath"];
22 }
23 return "VidmsCache";
24 }
25}
26
27
2{
3
4
5 this.CacheTimeout=int.Parse(System.Configuration.ConfigurationSettings.AppSettings["CacheTimeOut"]);
6 //this.CachePerUser=true; true只对某一用户有效,false 所有用户有效
7
8 if(!RenderCachedOutput(ref output)) //输出缓存,如果不成功的话,就重新加载
9 {
10 this.RenderMyWebPart(output); //实际的output内容
11 StoreCachedOutput(ref output);//加载后将其缓存起来
12 }
13}
14
15protected override string CacheKey
16{
17 get
18 {
19 if(Page.Request.QueryString["ChannelPath"]!=null||Page.Request.QueryString["ChannelPath"]!="")
20 {
21 return "New"+Page.Request.QueryString["ChannelPath"];
22 }
23 return "VidmsCache";
24 }
25}
26
27