2012-11-15 2 views
0

HttpRuntime.Cache를 사용하여 사이트 캐시를 저장하고 있습니다. 문제는 캐시 된 사이트가 삭제되고 새로운 업데이트 된 컴파일 된 버전을 업로드 할 때마다입니다. 나는 이것을 극복 할 방법을 알고 싶다. 모든 사랑스런 도우미들 앞에서 미리.C# asp.net MVC 캐시

답변

2

캐시가 메모리에 있습니다. 새 버전의 사이트를 업로드하면 IIS는 응용 프로그램 풀을 재활용합니다. 즉, 메모리가 지워지고 캐시가 캐시됩니다.

이 작동 방식을 변경할 수 없습니다.

캐시를 디스크 (또는 데이터베이스 또는 다른 것)에 유지하고 읽을 수는 있지만, 그대로 유지하는 것이 더 나을 것입니다.

별도의 캐시 서버를 사용하는 대신 IIS와 완전히 다른 memcached 같은 것을 사용할 수 있습니다.

+0

memCache는 메모리에 있으며 작은 데이터를 나타냅니다. 많은 양의 데이터를 보유하려고하므로 데이터를 보관하기 위해 하드 드라이브를 사용합니다. –

+0

@mashtagidi - 캐시해야하는 데이터의 크기가 포함되어 있어야합니다. 나는 디스크를 캐시로 사용하는 것이 실제로 아무것도 느리지 않기 때문에 실제로이 점을 보지 못합니다. – Oded

+0

"Memcached는 임의의 데이터 (문자열, 객체)의 작은 덩어리를위한 메모리 내장 키 - 값 저장소입니다." 내 응용 프로그램은 몇 천 달러짜리 키를 저장해야하지만 각 키의 크기는 그리 크지 않습니다. 가장 큰 개체는 수천 개의 레코드 목록을 포함 할 수 있지만 대개 20-30 개의 속성이있는 하나의 개체입니다. memcached가 내 요구 사항에 맞습니까? –

0

공유 (또는 분산) 캐시를 사용하면 문제가 해결됩니다. 이러한 캐시는 여러 웹 서버가 공유 캐시의 데이터에 액세스해야하는 웹 팜 환경에서도 사용됩니다.

는 마이크로 소프트가 (무료)

불과 몇 이름과 같은 NCache, MemCached, GemFire 또는 Oracle Coherence는 availbale 다른 많은 캐싱 제품이 있습니다 캐시 implementaion을 배포 AppFabric에서보세요.

+0

지금은 웹 팜이 아닌 하나의 사이트 만 있습니다. 하지만 내 정적 데이터가 캐시되지 않은 경우 캐시하는 것이 더 느려집니다. –

+0

iis 프로세스에서 캐시 된 값을 유지하려면 webfarms와 동일한 메커니즘을 활용할 수 있습니다. 비록 당신이 단 하나 상자에 달릴지라도. "공유 된", "분산 된"또는 "프로세스 외부"캐시라고 부르지 않습니다. 캐시를 프로세스 밖으로 가져 오려면 캐시 된 컨텐츠를 재활용으로 유지하는 것이 트릭입니다. –