2011-09-29 1 views
3

나는 전자 상거래 사이트를 구축하고 우리가 처리해야 할 요청 및 빈도를 감안할 때, 캐싱을 처음부터 코드베이스. 나는 .net 4의 system.runtime.cache와 system.web.cache에 대해 읽었다. 이러한 클래스는 응용 프로그램 수준에서 캐시를 제공합니다. 또한 outputcacheprovider 인터페이스를 사용하여 자체 커 스톰 공급자를 구현할 수도 있습니다..net 캐시 공급자 클래스를 사용하여 데이터베이스의 웹 서버에서 데이터베이스 쿼리 결과 캐싱

이제는 자주 웹 서버에 서버가 될 수있는 SQL 쿼리의 결과를 캐시하고 실제 db에 대한 왕복을 저장하는 웹 서버 자체에 작은 db 서버를 갖는 것이 더 좋을 것이라고 생각했습니다. 서버 및 DB 액세스.

나는 많은 블로그를 훑어 보았지만 나는 이것에 직접 관련된 것을 찾지 못했습니다. 이제 몇 가지 질문이 있습니다. 1. 자주 사용하는 쿼리를 처리하기 위해 웹 서버에 작은 dbserver를 설치하는 것이 좋습니까? 2. outputcacheprovider를 사용하여 이러한 유형의 캐싱을 구현할 수 있습니까?

답변

5

웹 서버에 추가 된로드 이외의 다른 많은 작업을 수행하지는 않습니다. 웹 서버 & db 서버 사이의 네트워크에서 충분한 지연 시간이 있으면 가치가있을 수있는 유일한 시간입니다.

캐싱의 요점은 처리 된 형식의 데이터를 고속 매체 (예 : 메모리)에 보관하는 것입니다.

db가 아닌 캐싱을 제공하려면 appfabric 또는 memcache와 같은 것을 사용하는 것이 좋습니다.

또한, 출력 캐싱 & 캐싱의 차이점을 확인하십시오. 캐싱은 응용 프로그램이 필요에 따라 사용할 수 있도록 메모리에 데이터를 보유합니다. OutputCaching은 페이지에 대해 생성 된 출력을 저장합니다. 이후 요청에서 캐시 된 버전 &을 얻을 때마다 페이지를 생성 할 필요가 없습니다.

+0

또한 캐시하는 위치와 위치를주의해야합니다. asp.net 캐시에 데이터를 삽입하면 앱 도메인의 모든 스레드가 액세스 할 수 있습니다. Asp.net 세션에 데이터를 삽입하면 현재 사용자의 컨텍스트 만 해당 데이터에 액세스 할 수 있습니다. 그래서, 나는 asp.net 캐시에 국가 목록 및 상태 목록 같은 것들을 삽입하고 사용자가 쿼리 결과 또는 asp.net 세션에서 세부 정보 데이터를 실행하면 필요하다면. – Nabheet

+0

@NabheetSandhu는 세션 캐시와 asp.net 캐시 및 이들 사이의 차이점을 사용하는 방법을 제시하는 기사에 대한 링크를 제공 할 수 있습니다. 내가 말했듯이 아직 코딩을 시작하지 않았고 나는 점프하기 전에 모든 것을 마무리하기 만 할뿐입니다. 고마워요. – intoTHEwild

+0

"... 네트워크에 충분한 지연이 있다면 차이가 나는 시간은 ..."반드시 그렇지는 않습니다. 데이터베이스 결과 캐싱 (일명 SQL 종속성 알림)은 데이터베이스 서버에 대한 호출 횟수를 줄여서 SQL 쿼리를 컴파일하고 실행할 필요가 없으므로 두 서버의 CPU 및 I/O로드가 줄어 듭니다. (웹 및 SQL)뿐만 아니라 네트워크 트래픽/병목 현상 및 각 요청을 개체 그래프를 다시 작성합니다. –