2009-09-15 4 views
2

다른 asp.net 웹 응용 프로그램 내부에서 한 asp.net 웹 응용 프로그램의 출력 캐시를 지울 수 있습니까?웹 응용 프로그램에서 ASP.NET OutputCache를 지우십시오.

이유가되고 ... 우리는 페이지 내/영역 1 /과/AREA2에 /있는 http://www.website.com/intranet/cms/

  • http://www.website.com/area1/
  • http://www.website.com/area2/
    • ... 같은 구조의 여러 WEP 응용 프로그램을 캐시되며/intranet/cms /를 통해 관리됩니다. 페이지가/intranet/cms /를 사용하여 편집되면 적절한/area #/응용 프로그램의 캐시에서 지우고 싶습니다.

      는 이미 작동하지 않습니다 HttpContext.Cache하지만 웹 응용 프로그램 당 캐시 할 것으로 보인다에 저장된 GUID, 최대 보이는는 VaryByCustom을 사용했습니다. 내가 +는 VaryByCustom 것을 사용할 수 있기 때문에, 내 문제를 해결할 단일 서버에서 웹 응용 프로그램간에 데이터를 전달하는 어떤 방법이 있었다 정말 경우

      .

      감사합니다. 나는이 일을 알고

      - 마이크 토마스

    답변

    3

    이전에이 작업을 수행 한 방법은 플러시, 다시로드 등을 수행하는 "숨겨진"페이지 (각각 /areaX 사이트)를 갖는 것입니다.이 페이지는 아무것도 수행하기 전에 공유 된 비밀 쿼리 매개 변수의 유효성을 검사합니다 (DoS 공격을 피하기 위해). 작업이 완료되면 페이지가 유효하면 "OK"메시지가 출력됩니다. 비밀이 유효하지 않으면 404 오류를 생성합니다.

    당신은 플러시는 다음 항목 별 또는 그룹별로 할 해당 항목/그룹을 식별하는 두 번째 매개 변수를 추가합니다.

    이 방법은 서버 기술 독립적이며, 필요한 경우 다른 관리 도구에 의해 트리거 될 수 있습니다.

    +0

    좋은 생각 - 나는 이것을 고려하고 있었다. "편집"영역에서 HTTP 요청을 내리는 것은 이상적이지 않지만 분명히 효과가 있습니다. – Mike

    +0

    여러 작업자 프로세스 (Web Garden)를 사용하지 않는 한 실용적인 솔루션입니다. – Badaro

    +0

    @Badaro : 좋은 지적, 나는 그 것을 기억해야 할 것입니다. 나는 현재 웹 가든에서 내 앱을 실행하지 않지만 여러 서버로드 밸런싱을 사용합니다. – devstuff

    2

    한 가지 방법은 의존성, 보통 파일로 공유 자원을 사용하는 것입니다. 파일이 변경되면 캐시가 지워집니다. 제 생각에는 HttpResponse.AddFileDependency을 사용할 수 있다고 생각합니다.

    그러나, 이러한 경우에는 memcached 같은 독립 프로세스 캐시를 사용하는 것이 좋습니다. 나는 그것을 직접 테스트하지는 않았지만,이 link은 Memcached를 OutputCache와 함께 사용하는 것을 다룬다.

    +0

    재미있는 가능성. 나는 본질적으로 "temp"파일을 서버에서 차게하는 (우리가 개별 페이지를 무효화할 수 있기를 원하기 때문에) 많은 사람들을 열렬하게 애타게 느끼지는 않지만 실용적으로 보입니다. 이 모든 것이 여전히 단일 서버에 있기 때문에 외부 캐싱 공급자를 설정하는 데 따르는 관리 오버 헤드는 그럴 가치가 없지만 트릭을 수행합니다. – Mike

    관련 문제