2013-04-22 2 views
0

우리는 ASP.Net MVC3 기반 웹 응용 프로그램을 보유하고 있습니다. 우리는 데이터베이스에있는 전형적인 마스터 데이터 테이블을 가지고 있습니다 - 우리는 SQL 데이터베이스에서 드롭 다운 및 자동 완성을 채우는 동안 이러한 테이블 데이터 (및 일부 뷰)를 조회해야합니다. 따라서 사용자가 페이지를 새로 고치더라도 DB에서 변경되지 않은 (거의) 마스터 데이터를 가져옵니다. 마스터 데이터의 대부분은 < 100 레코드입니다. 내가 "응용 프로그램 수준 변수"로세션 또는 데이터베이스의 MVC 웹 응용 프로그램 드롭 다운 데이터

목록 < 마스터 데이터 오브젝트 >를 넣어 경우

는 (또는 이어야 "세션 수준")

않도록하는 것이 좋습니다 있을까 이 왕복? 모든 마스터 데이터를 처리하는 것은 어떨까요? 나는 "요구에 따라"앱 레벨 변수를 채우는 것이 초기 페이로드를 덜 공격적으로 만들 수 있다고 믿는다. 특정 시나리오에서 데이터를 새로 고치려면 무효화/재 게시 할 수 있습니다.

이 문제를 해결하기위한 생각이나 다른 방법을 제안하십시오. 그리고 마지막으로,이 최적화가 실제로 가치가있는가요? (즉, 데이터베이스 액세스가 앱 수준 액세스와 비교할 때 큰 문제가 아니라면 보통 사용자 액세스이며 db 크기는 10-15MB와 비슷합니다). 우리는 물건을 간단하게 유지하기 위해 노력한다. & 깨끗하다.

답변

1

ASP.Net 출력 캐싱에서 읽으십시오. 출력 캐싱을 사용하면 웹 서버가 첫 번째 요청의 결과를 기억하고 실제로 처리하지 않고 반복적으로 사용하도록 지시합니다 (db를 치지 않는 경우). 이 간단히 말해서

가 조회 데이터를 제공하고 출력 캐시에 조회 데이터를로드 할 UI 코드에서

를 사용하여 Ajax를 속성으로 그들을 장식 할 컨트롤러 액션을 작성해야 할 것 것입니다 위의 컨트롤러 동작의 목록 및 드롭 다운

UI는 웹 서버에 대한 호출을 많이하지만 웹 서버는 캐시의 결과를 제공합니다. 그것은 단지 (다른 primery 우려하지만)를 DB에 부하를 줄일 않겠지 만 속도면에서 아주 좋은 성능 결과와 것 그, 간단한 깨끗하고 눈에 거슬리지

주제에 대한 좋은 첫 번째 읽기

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

해피

+0

감사 코딩. 검색 데이터에 대한 컨트롤러 및 작업을 수행하므로 캐싱을 활성화 할 수 있지만 동일한 작업은 검색 용어 (예 : Lookup (source, searchTerm))와 같은 결과를 가져 오는 자동 완성 플러그인에서 사용됩니다. 나는 캐싱이 Lookup (소스)에서 훌륭하게 작동 할 수 있다고 믿지만, searchTerm은 어떨까요 - 인수를 기반으로 캐시 할 것인가? 어떻게 제어 할 수 있습니까? –

+0

비슷한 것 - http://stackoverflow.com/questions/6339191/can-you-use-output-caching-in-asp-net-mvc-based-on-the-parameters-of-your-contro. 마지막으로 한 가지 - 나는 그것이 사용자 특유의 것이라고 생각하지 않는다. –

+0

안녕하세요, Hemant, 매개 변수를 기반으로 다시 작성하려면 캐시를 설정하는 방법이 있지만 그 옵션을 사용하지 않았습니다. DoodNet 프레임 워크 기반의 캐싱에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/dd997357.aspx를 참조하십시오. –