2009-04-09 5 views
2

우리 사이트가 .NET 1.1에서 .NET 3.5로 옮겨졌으며 그 과정에서 타사 서버 컨트롤이 업데이트되었습니다. 이 패키지 중 하나는 WebResource.axd를 통해 제공되는 javascript를 사용합니다. 이들은 보통 <script src="" /> 태그로 포함됩니다.WebResource.axd 및 HTTP 헤더

그러나 트래픽을 보면 이러한 자바 스크립트 파일은 클라이언트 쪽 캐싱을 방지하는 헤더로 전달됩니다. 그리고 우리는 많은 자바 스크립트를 말하고 있습니다. 문제의 헤더 :

 
Cache-control: no-cache, no-store 
pragma: no-cache 
Expires: -1 

이러한 헤더는 .NET에서 구성 할 수 있습니까? HttpModule을 구축하지 않으면 이러한 요청을 가로 챌 수 있습니까? 이것은 내가 컨트롤 벤더를 비난 할 수있는 것입니까? <brandish weapon="blameGun" />

감사합니다,

남작

답변

6

당신이 시도 할 수 : HttpCacheability

HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public); 

다른 유형은 여기에 설명되어 있습니다 :

http://msdn.microsoft.com/en-us/library/system.web.httpcacheability.aspx

편집 :

대신 모듈의 사용자 Global.asax 파일이 던질 수 : 귀하의 웹 사이트의 Web.config의에서 <compilation debug="true"> 세트로 배포 된 경우

void Application_AuthorizeRequest(object sender, EventArgs e) 
{ 
    if (Request.Path.IndexOf("WebResource.axd") > -1) 
    { 
     Response.Cache.SetCacheability(HttpCacheability.Public); 
    } 
} 
5

이 발생할 수 있습니다. 이 경우 임베디드 리소스로 제공되는 JavaScript 파일을 쉽게 디버깅 할 수 있도록 캐싱이 비활성화됩니다. 해결 방법은 compilation 태그의 debug 속성을 false로 설정하는 것입니다. 더 많은 정보는 this 훌륭한 블로그 게시물에서 찾을 수 있습니다.

0

답장을 보내 주셔서 감사합니다. 우리가 이미 작성하고 싶지 않은 HttpModule을 이미 가지고 있다는 것이 드러났습니다. 문제의 원인이었습니다.