1

HttpRuntime.Cache에 저장된 모든 사용자에 공통된 데이터가 있습니다.세션에 저장된 값은 HttpRuntime 캐시의 값에 따라 다릅니다.

그런 다음 사용자 관련 데이터가 세션에 저장되어 있습니다.

HttpRuntime.CacheCacheDependency 메커니즘을 가지고 있으며 캐시의 항목 간 관계를 정의하는 데 사용할 수 있습니다.

세션과 런타임 캐시 간의 종속성을 처리하는 데 사용 하시겠습니까?

CacheDependencies에 추가로 CacheItemRemovedCallback이 있습니다. 가능하다면이 콜백 중에 각 세션에서 특정 값을 제거 할 수 있습니다.

답변

2

캐시 종속성은 다른 방식으로 작동합니다. 즉, 캐시가 무언가에 종속되어있을 때가 아니라 캐시에 의존적 인 경우입니다.

CacheItemRemovedCallback을 사용하면 Session 개체의 항목을 업데이트 할 수 없습니다. 콜백은 특정 사용자의 범위에서 호출되지 않으므로 Session 객체에 액세스 할 수 없습니다. 캐시에서 제거 된 항목에 따라 데이터가 모든 사용자에게 속할 수 있으므로 모든 사용자의 데이터에 액세스 할 수 있도록 데이터를 다른 곳에 보관해야합니다.

+0

예, 캐시 종속성의 목적을 알고 있습니다. 나는 세션과 캐시 간의 의존성을 처리 할 수있는 비슷한 것이있을 것이라고 생각했다. 하지만 MAYBE는 사용자 관련 데이터를 세션에서 런타임 캐시에 저장된 사전 또는 해시 테이블로 이동하는 가장 쉬운 방법입니다. –

+2

@Radex : 네, 의존하는 개체에 사용자 종속 데이터를 저장하는 것이 더 쉬울 수도 있습니다. 'Session_End' 이벤트로부터 사용자에 대한 데이터를 지울 수 있도록 사용자 데이터가있는 곳에서 객체에 대한 참조 콜렉션을 유지할 수 있습니다. 웹 응용 프로그램은 다중 스레드이므로 다른 사용자가 액세스하는 모든 객체에 대한 액세스를 동기화해야합니다. – Guffa

관련 문제