2012-03-15 3 views
1

사용자 정의 블로그 페이지가 있고 페이지 오른쪽에는 가장 인기있는 블로그를 보여주는 "패널"과 마지막으로 블로그에서 가장 많은 투표를 가진 사람들이 있습니다 주 3 다른 것들. 이 패널들은 모두 무겁다. 그들은로드하는 데 몇 초가 걸립니다. 여기 포스트 백에서 캐시 된 컨트롤을 피하십시오.

거친 레이아웃의 개요입니다 : 그들은 너무 자주 모든 변경에 바인딩되지 않기 때문에, 나는 webcontrols에 그들 모두를 격리 한 Balsamiq

로 만든 enter image description here

모형 (의 .ascx global.asax에 내가 내 사용자 지정 캐시 변수와 일치하는이있어

<%@ OutputCache Duration="7200" VaryByParam="*" VaryByCustom="CacheByModule" %> 

그리고 :) 그들은 모두 출력 캐시를 :

나는 본질적 등 내 웹 사이트, 블로그, 설문 조사, 설문 조사, 퀴즈의 다른 부분에 대해 같은 일을하고 있어요
public override string GetVaryByCustomString(HttpContext context, string custom) 
    { 
    switch (custom.ToLower()) 
    { 
     case "cachebymodule": 
      Request.Url.PathAndQuery.Split('/')[0]; 
      break; 
    } 

      return base.GetVaryByCustomString(context, custom); 
    } 

..의

내가 처음으로 내 페이지를 실행, 모든 그들은 처형 당하고 있습니다. 다음 실행시 - 아무 것도 실행되지 않으며 예상됩니다.

이제는 이런 일이 발생합니다. 포스트 백 이벤트 인 블로그에 댓글을 달거나 답장을 보내고 댓글 섹션에 아약스 업데이트 패널을 사용하면 모든 오른쪽 사이드 패널이 실행 중입니다!

어떻게 알 수 있습니까? 글쎄, 내가 응용 프로그램을 디버깅 할 경우 중단 점이 응답 및 삭제 (다시 게시 이벤트)에 부딪치게됩니다. SQL 프로필러는 그만큼 두 번 확인을 보여줍니다.

이것은 예상되는 동작입니까? 그것들을 캐싱하는 전체 요점은 결코 실행되지 않습니다. 그러나 모든 응답과 삭제와 함께 그들은 실행되고 있습니다. 그들이 실행되지 않습니다 만 시간이 신선한 페이지로드에

그래서, 왜이 포스트 백에서 실행되고있는 (그리고 캐시 제한 시간 내에)인가? 어떻게 피할 수 있습니까? URL에 + PARAMS이 PageLoad/다시 게시에 대해 동일하지 않기 때문에

감사

답변

2

가 실행되는 이유는, 그러므로 출력 캐싱이 작동하지 않습니다.
당신은 시도 할 때 URL 변경을 재설정 방지하기 위해 OutputCache를 VaryByParam="None"을 설정할 수 있습니다.

<%@ OutputCache Duration="7200" VaryByParam="None" VaryByCustom="CacheByModule" %> 

CacheByModule이 수행하는 작업에 따라 작동해야합니다.

+0

오, 좋아, 지금을 시도하고 다시 비트 드릴 것입니다, 감사 – LocustHorde

+0

아하 !!!! 그거였다! 내가 얼마나 행복한 지 말할 수 없다. 고마워. – LocustHorde

+2

@LocustHorde 대단히 환영합니다. 나 자신과 같은 문제에 많은 시간을 할애해야합니다. – ntziolis

관련 문제