2010-11-19 1 views
0

나는 데이터베이스와 때로는 캐시에서 가져 오는 저장소가 있습니다.httpcache 문제

이것을 구현하기 위해 Repo에서 HttpRuntime.Cache, AppFabric 등을 사용하는 인터페이스 ICacheWrapper를 만들었습니다. ICacheWrapper의 구체적인 클래스는 보통과 같이 자신의 생성자에서 캐시를 가지고 : 새로운 HttpCacheWrapper을 (HttpRuntime.Cache)

는 환매 특약의 생성자과 같이 캐시 래퍼에 대한 참조를 취합니다

myRepo = new Repo(new HttpCacheWrapper(HttpRuntime.Cache)); 

내가 2를 만들 경우 repos, 캐시가 완전히 복사됩니까? 나는 그렇지 않다고 생각 하겠지만, 우리의 성과 문제는 그렇지 않다는 것을 나타냅니다. 내가 여기 뭔가를 놓친 적이 있니?

도움 주셔서 감사합니다.

답변

0

뭘보고 있습니까? HttpCacheWrapper는 HttpRuntime.Cache를 통해 무엇을 처리합니까?

내가보기에는 캐시 된 정책이 너무 길어서 캐시되는 비율에 맞지 않는 것으로 판단됩니다. Raymond Chen은 "잘못된 캐시 정책은 메모리 누수와 구별 할 수 없습니다."라고 말했습니다.

내가 분리 할 수있는 방법은 가지고있는 정책을 사용하여 하나의 저장소로 테스트하려고하는 것입니다. 성능 문제가 나타나는지 확인하십시오.

그렇지 않으면 2 차 레포를 만들고 메모리 사용을 면밀히 모니터링하십시오.

+1

조금 더 많은 연구/리팩토링 결과 : 캐시에서 가져온 내용 목록이 단일 캐시에서 제공되는 것처럼 보입니다. 이 목록은 요청한 웹 양식의 요구 사항에 맞게 필터링됩니다. 그런 다음 필터링 된 목록이 webform UI에 바인딩됩니다. 무슨 일이 일어나고있는 것 같아요 필터링 된 목록은 캐시 된 목록 이외에 만들어지고 둘 다 신속하게 GC - ed되고있다. –