2010-05-17 5 views
1

WCF Data Services와 함께 출력 캐싱을 사용하고 캐싱을 지원하기 위해 특별히 제작 된 것은 없지만 OnStartProcessingRequest 메서드를 사용하면 캐싱 기능을 사용할 수 있습니다. 요청은 일반적인 ASP.NET 메커니즘을 사용합니다.ASP.NET 출력 캐시 메모리 사용 제어

큰 응답을 캐시하면 과도한 메모리 소비로 인해 작업 프로세스가 재활용되는 걱정이됩니다. 이 제한을 초과하면 캐시의 항목이 삭제되도록 ASP.NET 출력 캐시의 상한을 지정하는 방법이 있습니까?

구성 설정이 caching 인 것을 보았습니다. 그러나 메모리 관련 특성이없는 별도의 outputCacheSettings이 있기 때문에 캐시 개체를 통한 명시 적 캐싱에 대한 문서의 느낌을 얻었습니다.

여기에 Scott Hanselman's post의 코드 스 니펫은 요청의 캐시 가능성을 설정하는 방법을 보여줍니다.

protected override void OnStartProcessingRequest(ProcessRequestArgs args) 
{ 
    base.OnStartProcessingRequest(args); 
    //Cache for a minute based on querystring 
    HttpContext context = HttpContext.Current; 
    HttpCachePolicy c = HttpContext.Current.Response.Cache; 
    c.SetCacheability(HttpCacheability.ServerAndPrivate); 
    c.SetExpires(HttpContext.Current.Timestamp.AddSeconds(60)); 
    c.VaryByHeaders["Accept"] = true; 
    c.VaryByHeaders["Accept-Charset"] = true; 
    c.VaryByHeaders["Accept-Encoding"] = true; 
    c.VaryByParams["*"] = true; 
} 

답변

1

Ahh! 지금은 바보 같아서 ... 나는이 제한을 설정할 수있는 것으로 보입니다. in IIS's configuration은 IIS가 ASP.NET에 출력 캐싱 서비스를 처음부터 제공하고 있기 때문에 의미가 있습니다.

그리고 추가 보너스로는 IIS가 이미이에 대한 몇 가지 합리적인 설정이 기본값 것 같다 :

최대 캐시 응답 크기 (바이트)이 의 최대 크기를 모두를위한 캐시 된 응답을 지정합니다 사용자 모드 및 커널 모드 캐시 기본값은 262144 바이트입니다. 이 필드는 서버 레벨 에서만 사용 가능합니다. 다른 모든 수준에서는 읽기 전용입니다.

캐시 크기 제한 (MB) 사용자 모드 및 커널 모드 캐시의 크기 제한을 구성합니다. 은 크기 (MB)를 입력하거나 0을 입력 할 수 있습니다. 을 입력하면 IIS는 사용 가능한 실제 메모리 또는 가상 메모리 중에서 절반을 사용합니다. 이 필드 은 서버 수준에서만 사용할 수 있습니다. 다른 모든 수준에서는 읽기 전용입니다.