2013-01-17 1 views
0

인트라넷에서 작업 중이며 서버에 개체를 캐시하고 각 사용자가 생성하는 것과 달리 요청시이를 사용자에게 제공하고 싶습니다. 자신의 개체 사본. 나는 또한 ... 대상에게 30 분마다 새로 나는 현재 HttpContext.Current.Cache을 사용하고모든 사용자에 대해 개체를 한 번 캐시하고 30 분마다 새로 고칩니다.

을하고 싶습니다,하지만 확실 해요 경우 : 내가 2 찾고 있어요 무엇 1. 이 작업을 수행하는 더 좋은 방법이 있습니다 (저는 웹 서비스를 생각하고 있습니다)?

감사합니다.

+0

개체는 무엇입니까? –

+0

잠재적으로 수백 개의 사용자 개체로 구성된 목록입니다. – user948060

답변

1

에 묶여 있다는 점에서 HttpRuntime.Cache (HttpContext.Cache과 동일)은 함정이 있습니다. 재활용하면 캐시도 재생됩니다.

외부 캐시 공급자 역할을하는 Membase (Memcache)를 설치하고 응용 프로그램 재활용간에 영구적으로 설치하십시오.

새로 고침에 관해서는 개인적으로 항목을 30 분 동안 캐시하지만 만료되도록합니다. 요청이 들어오고 항목이 더 이상 캐시에 없을 때만 새로 고침하십시오. 이렇게하면 요청 된 오브젝트 만 캐시에 남아 있도록 캐시가 효율적으로 유지됩니다. http://www.lloydkinsella.net/2012/09/30/bettering-the-better-net-cache/

1

을 HttpContext.Current.Cache 모든 사용자간에 공유 응용 프로그램 도메인 전체 캐시입니다 -

은 뻔뻔한 플러그로 나는 당신이 사용 여기에서 볼 수있는 Memcache를을 지원하는 얼마 전에 캐시 라이브러리를 썼다. 모든 사용자에게 공유해야하는 개체를 저장할 수있는 적절한 장소입니다. 또한 만료를 지원합니다.

+0

이렇게하면 첫 번째 사용자가 해당 페이지를 탐색하고 캐시가 만들어지고 이후 사용자가 캐시에서 개체를 검색 할 때이를 의미합니까? 두 명의 사용자가 정확히 동일한 인스턴스에서 작업을 수행하면 어떻게됩니까? – user948060

+0

다소 차이가 있습니다. 코드에 따라 다릅니다 (자세한 내용은 [캐시에 항목 추가] (http://msdn.microsoft.com/en-us/library/18c1wd61(v=vs.100) .aspx) 참조). 변경할 수없는 개체를 캐싱하는 경우 여러 요청이 동시에 개체를 수정하지 못하도록 자체 잠금을 추가해야합니다. –

관련 문제