2008-08-22 6 views

답변

6

이 도움이 될 경우 당신은 HttpResponse.Cache property를 사용하여 시도 할 수 있습니다 :

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60)); 
Response.Cache.SetCacheability(HttpCacheability.Public); 
Response.Cache.SetValidUntilExpires(false); 
Response.Cache.VaryByParams["Category"] = true; 

if (Response.Cache.VaryByParams["Category"]) 
{ 
    //... 
} 

또는 HttpResponse.CacheControl으로 모두 페이지 캐싱을 차단할 수 수 있지만, 그 위 캐시 속성에서 사용되지 않기 :

Response.CacheControl = "No-Cache"; 

편집 : 손으로 모든 것을 할 정말 go nuts하고 또는 당신이 수 :

Response.ClearHeaders(); 
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1 
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1 
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1 
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1 
Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1 
Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1 
0

가장 좋은 방법은 아마도 ASP.NET 페이지 (또는 마스터 페이지를 사용하고 있다면 마스터 페이지)에 no-cache 지시문을 넣는 것입니다. 나는 ASP.NET 코드에서 이것을 직접적으로 처리 할 방법이 없다고 생각합니다 (클라이언트에서 캐시 결정이 일어나기 때문에).

MVC의 경우 어떻게 수행 할 것인지 모르겠다 (Web Forms 기반 ASP.NET과 다른 것으로 가정). 나는 그것을 사용하지 않았다.

6

나는

건축가가 귀하의 응용 프로그램이 아무튼 그래서 (또는 적어도 읽고) "페이지에서"사용자 이벤트에 대한 응답으로 일을하지 않으려 고, 오히려 생각하기 위해 최선입니다 .. 알고 지금까지로 뒤로 단추가 눌려지면 신경 쓰지 않아도됩니다 .. 이것은 개발의 관점에서 약간의 추가 작업을 의미 할 수도 있지만 전반적으로 응용 프로그램을 더욱 강력하게 만듭니다.

3 단계에서 일부 데이터 chages를 수행하면 사용자가 2 단계로 돌아가서 다음을 다시 클릭하면 응용 프로그램이 변경 사항이 있는지 확인합니다. 이상적으로는 을 변경하지 마십시오. 사용자가 마지막에 "확인"을 클릭 할 때까지. 이렇게하면 모든 변경 사항이 저장되고로드 할 때마다 이전에 입력 한 값을 기반으로 양식을 다시 채울 수 있습니다.

나는이 정보가 의미있는 바를 희망합니다.)

+0

-1 실용적인 답변보다 이상적인 답변입니다. 일부 응용 프로그램은 처음부터 특별한 방법으로 설계되었습니다. 예산이 부족한 대규모 팀에서 작업 할 경우 비즈니스 이해 관계자에게 명백한 이익을주지 않고 자원을 싱크하여 아키텍처를 변경하는 것이 매우 어렵습니다. 게다가이 질문에 정말로 대답하지 않습니다. –

2

RFC 2616 §13.13역사와 캐시가 다른 것을이 있다고 말한다. 캐시가 뒤로 버튼에 영향을 미치지 않아야합니다.

HTTP 헤더의 조합이 뒤로 버튼에 영향을주는 경우 브라우저의 버그입니다. 단 한 가지 예외가 있습니다.

HTTP에서 S 브라우저는 뒤로 버튼을 사용할 때 페이지를 새로 고치라는 요청으로 Cache-control: must-revalidate을 해석합니다 (모질라는 "바보 같은 뱅크 모드"라고합니다). 이것은 일반 HTTP에서는 지원되지 않습니다.

0

다음 코드는 IE9 +, FF21과 최신 크롬에 나를 위해 일한 :

Response.Cache.SetCacheability(HttpCacheability.NoCache | HttpCacheability.Private); 
Response.Cache.AppendCacheExtension("must-revalidate"); 
Response.Cache.AppendCacheExtension("max-age=0"); 
Response.Cache.SetNoStore(); 
앱에서 모든 페이지가에 왕복이 필요 있도록

당신은 MasterPage에서 Page_Load() 이벤트 처리기에서이 작업을 배치 할 수 있습니다 서버를 다시 시작합니다.

관련 문제