2009-08-03 1 views
9

캐싱과 관련하여 질문이 있습니다. 일반적인 n- 티어 ASP.NET 웹 응용 프로그램이 있습니다. 커스텀 Cache 래퍼 (ASP.NET Cache 객체 래핑)를 만들었고, 데이터 캐싱의 모범 사례를 알고 싶습니다. 내 비즈니스 계층에서 캐싱을 사용하고 싶지 않습니다. System.Web dll에 대한 참조를 추가하고 싶지는 않습니다. DAL과 동일한 경우. 그래서 남아있는 유일한 옵션은 다음과 같습니다 UI 계층 ASP.NET 응용 프로그램에서의 캐싱 관련 권장 사항

  • 에서

    1. 캐시의 모든 (? 해달라고 어떻게 가능한 알고)

    이 나는 ​​또한에 대해 들어 UI와 BL 사이의 캐시 레이어 만들기 다가오는 Velocity 캐싱 프레임 워크이지만 내 앱이 웹 팜/클러스터를 필요로하지 않기 때문에 과도 할 수도 있습니다.

    필자의 접근 방식이 잘못되었을 수 있으므로 웹 프로젝트에서 데이터를 효율적으로 캐시하는 방법에 대한 제안이나 대안을 환영합니다.

  • 답변

    10

    UI와 BLL 사이의 계층은 캐싱을위한 좋은 장소 인 서비스 계층입니다. 추상화 된 캐시 관리자 (example on my blog)를 사용하면 필요한 경우 공급자 (ASP.NET 캐시, Velocity, memcached 등)를 스왑 할 수 있습니다.

    +0

    블로그의 예를 좋아합니다. 인터페이스를 많이 사용합니다. – Rutger

    +0

    우리는 똑같은 작업을 수행하여 ASP.Net 캐시에서 memcache로 마이그레이션을 실제로 수행했습니다. ASP.Net의 캐시 계층이 원래 플러그 방식이 아닌 것은 내게 미스테리입니다. – jro

    +0

    ASP.NET 4에 있습니다. –

    1

    때로는 캐시 된 데이터의 목적이 무엇인지 고려해 볼 가치가 있습니다. 궁극적으로 UI 레이어에서 정적 HTML을 생성하고 사용자 컨트롤에 이러한 부분을 래핑하고 @OutputCache 지시문을 추가하는 것이 가장 효율적인 방법 일 수 있습니다 (적어도 웹 양식을 사용할 때). 이것을 잊어 버리는 것은 쉽습니다. 때로는 캐싱 프레임 워크 등에서 느긋하게 지내는 경우가 있습니다. 물론이 방법이 적합하지 않을 수도 있고 많은 경우에 적합하지 않을 수도 있습니다.

    +0

    기본적으로 DB에서 오는 데이터를 캐시하고 싶습니다 (또는 짧은 캐시 내 비즈니스 개체/컬렉션). – Raghav