2010-08-10 2 views
7

캐쉬 어빌리티 리소스로 설정하려고합니다. 따라서 만약 내가/foo/goto로 보여 준다면 어떤 자원에 대한 View를 보여줄 것이고, 이것을 몇 시간 동안 캐시 할 것입니다 (예를 들면). 이렇게하려면 내 Action Method를 꾸미는 OutputCache 특성을 사용하고 있습니다. 이 캐시에 대한 세부 정보 (이 작업 메서드에 대한)는 web.config 파일에 있습니다.ASP.NET 응용 프로그램에서 S-MaxAge CacheControl 값을 설정하는 방법은 무엇입니까?

출력 캐시를 설정할 때 maxage value ..이 올바르게 설정되어 있지만, s-maxage 값은 0입니다. 여기

는 ..

<add name="SomeController_Show" duration="3600" varyByParam="authkey;format;blah" /> 

및 응답의 조각 ...

Cache-Control:public, max-age=3576, **s-maxage=0** 
Content-Length:746 
Content-Type:application/json; charset=utf-8 
Date:Tue, 10 Aug 2010 00:42:17 GMT 
Expires:Tue, 10 Aug 2010 01:41:53 GMT 
Last-Modified:Tue, 10 Aug 2010 00:41:53 GMT 
Server:Microsoft-IIS/7.0 
Vary:* 

...

[Authorize] 
[OutputCache(CacheProfile = "SomeController_Show")] 
public ActionResult Show(){ ... } 

코드이고 여기에 설정 파일의 조각이다 maxage가 올바르게 설정되었지만 s-maxage가 올바르게 설정되어 있지 않은지 확인하십시오. 누군가 나를 도울 수 있습니까?

답변

12

대답을 찾았다면 [AuthorizeAttribute]은 모든 maxage를 0으로 지 웁니다. 즉, 모든 캐시는 프록시가 아니며 권한 부여 인보기 결과를 의미합니다.

URL을 통해 프록시 캐시 컨텐츠를 추측하고 있습니다. URL에 인증 세부 정보가 포함되어 있지 않은 경우 (실제로는 ...하지 않아야합니다 ...) 어떻게 두 개의 다른 요청은 같은 사람을위한 것인가 아닌가?

(이 문제는 다른 개발자의 도움을 위해 삭제하는 대신 답을 추가했습니다.)

또한 비슷한 질문 : Can someone explain this block of ASP.NET MVC code to me, please?