2010-06-22 5 views
0

SharePoint Foundation 2010을 사용 중이고 일부 페이지 또는 사이트 전체에 대해 출력 캐싱을 사용하려고합니다. SharePoint Server에는 사이트 모음 전체에서 페이지 출력 캐싱을 사용할 수있는 메커니즘이 있습니다 (실제적으로 ASP.NET 출력 캐시입니다). SPF에서는 그 기능을 충분히 사용할 수 없습니다.SharePoint Foundation에서 출력 캐시를 사용하려면 어떻게해야합니까?

어떻게 출력 캐싱을 활성화 할 수 있습니까? ASP.NET에서 나는 페이지 지시문을 추가 할 것입니다. < % @ OutputCache Duration = "30"%>과 같은 것입니다. 이 페이지에 있으면 SharePoint에서 오류가 발생합니다. 코드로 처리해야하는 것처럼 들리지만 페이지 클래스를 재정의 할 수 있습니까? 어떤 제안이라도 환영합니다.

답변

0

상단 사이트 모음으로 가야합니다. 사이트 관리 -> 사이트 모음 출력 캐싱 -> 현금 프로필과 같은 옵션이 있습니다. 출력 캐싱 및 기타 물건에 대한 프로필을 설정할 수 있습니다.

0

당신은에 있습니다

0 - 매개 변수

<%@ OutputCache Duration="300" VaryByParam="*" Shared="True" VaryByCustom="x" VaryByControl="hdnButtonToForceUpdateCacheIfYouWantOnClick" %> 

추가 1 - SPHttpApplication, IVaryByCustomHandler을 확장합니다. https://msdn.microsoft.com/en-us/library/office/ms550239(v=office.14).aspx

: -

public class MyCache: SPHttpApplication, IVaryByCustomHandler { 
public override void Init() 
     { 
      base.Init(); 
      this.RegisterGetVaryByCustomStringHandler((Microsoft.SharePoint.ApplicationRuntime.IVaryByCustomHandler)this); 
     } 

     public string GetVaryByCustomString(HttpApplication app, HttpContext context, string custom) 
     { 
      StringBuilder sb = new StringBuilder(); 

string[] strings = custom.Split(';'); 
      bool appended = false; 
      foreach (string str in strings) 
      { 
       switch (str) 
       { 
        case "x": 
         var xv= context.Request.Cookies.Get("x"); 
         if (xv!= null) 
         { 
          sb.Append(xv.Value); 
         } 

         break; 
       } 
      } 
      return sb.toString(); 
      } 
    } 

이 후 수정하여 Global.asax에,

<%@ Assembly Name="Microsoft.SharePoint"%> 
<%@ Assembly Name="Energisa.Distribuidora.Webparts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e2d241931dc35e9d"%> 
<%@ Import Namespace="(Namespace).Webparts" %> 
<%@ Application Language="C#" Inherits="(Namespace).MyCache" %> 

은 더보기
관련 문제