2008-11-08 3 views
0

오징어를 사용하면 웹 페이지를 캐시 할 수 있습니다. ASP.NET 캐싱 (나는 주로 ASP.NET 사용)과 같은 캐싱 메서드를 제공하는지 확실하지 않지만 웹 페이지를 캐시하는 도구입니다.Memcached와 Squid를 사용하면 ASP.NET 캐싱이 필요합니까?

그러면 데이터베이스 테이블을 캐시 할 수있는 memcached가 있습니다. 나는 이것이 정확하다고 믿고 SqlCacheDependency와 같다.

그러나 대형 웹 응용 프로그램에서는 memcached, squid 및 ASP.NET (또는 PHP, JSP - 응용 프로그램 프레임 워크 수준) 캐싱을 사용할 수있는 공간이 있습니다.

감사합니다.

답변

2

전체 페이지 캐싱이 너무 거칠고 데이터베이스 테이블 캐싱으로 충분하지 않을 수 있습니다. 따라서 많은 양의 캐싱이 필요합니다.

예를 들어 모든 페이지에 로그인 한 사용자의 이름이 표시된 응용 프로그램이 있다고 가정 해보십시오. 전체 페이지 캐싱은 실제로 작동하지 않으므로 앱 프레임 워크 내에서 레벨 및 캐시를 드롭 다운해야합니다.

+0

예제는 일반적인 시나리오입니다. 전체 페이지 캐싱에는 "도넛 캐싱 (donut caching)"이라고 불리는 특정 HTML 조각을 변경하는 방법이 있습니다. http://stackoverflow.com/questions/3318570/turn-off-page-level-caching-in-a-user-control/3318609#3318609를 참조하십시오. –

2

그러면 데이터베이스 테이블을 캐시 할 수있는 memcached가 있습니다. 나는 이것이 정확하다고 믿고 SqlCacheDependency와 같다.

Memcached는 분산 된 해시 테이블입니다. 내장 된 .NET 캐싱보다 큰 장점은 캐시가 확장 가능하고 (원하는만큼 많은 memcached boxen을 추가 할 수 있음) 동기화 (모든 웹 서버가 동일한 항목에 액세스 할 수 있고 하나의 웹에서 데이터를 무효화 또는 업데이트 할 수 있다는 것입니다. 서버는 즉시 하나 개의 시스템에 인 메모리 조회에 반대 (당신이

), 서버에서 개체를 찾고있는 그들 모두)

성능 현명한, 그것은 닷넷 캐시보다 더 나쁘다 전달됩니다

그러나 대형 웹 응용 프로그램에서 memcached, squid 및 ASP.NET (또는 PHP, JSP - 응용 프로그램 프레임 워크 수준) 캐싱을 사용할 수있는 공간이있을 수 있습니다.

위의 이유로, 나는 2 레벨 캐시를 상상할 수 있습니다. 먼저 .NET 캐시와 memcached를 사용합니다. (예 : Get()은 memcached를보고 10 초 후에 만료되도록 .NET 캐시에 결과를 저장 한 다음 다음 10 초 동안 동일한 캐시 키를 사용하여 모든 get 호출에 .NET 캐시를 사용하여 다시 긋고 반복합니다)

이 방법을 사용하면 memcached의 동기화 및 확장 성 이점을 통해 순수한 memcached 솔루션의 네트워크 IO 비용없이 메모리 내 캐시 조회의 성능을 얻을 수 있습니다.

관련 문제