2009-05-28 2 views
1

내 시나리오는 다음과 같습니다 1) 사용자가 LinqDataSource를 통해 ListView에 표시 할 값을 검색하기 위해 검색을 실행합니다. 2) 세부 정보를 검토 할 수있는 다른 페이지로 이동하는 항목 중 하나를 클릭하면 추가 드릴 다운이 발생할 수 있습니다. 3) 사용자는 원래 ListView 결과로 돌아가 다른 항목을 선택하려고합니다. 검사.ListView 데이터를 캐싱 할 수있는 옵션을 캐싱 하시겠습니까?

쿼리 스트링 매개 변수를 전달하여 사용자가 ListView로 돌아올 때마다 쿼리를 복제 할 수 있지만 결과를 캐시 할 수있는 것처럼 보일 수 있습니다.

LinqDataSource를 사용하고 있기 때문에 쿼리를 실행할 때마다 실제 결과가 반입됩니다. 나는 현재 e.Results에 "select new {blah, blah}"형식의 IEnumerable을 제공하고 있는데 익명 형식으로 채워져 있기 때문에 List로 변환 할 수 없습니다.

요약 : 1) 잠재적으로 큰 쿼리 결과를 사용자 세션에 배치하려고 시도하는 것이 합리적입니까? 2) 목록에 합리적인 데이터 구조가 있습니까? 3) 익명 데이터를 저장하고 쿼리 결과를 열거하고 List를 채우는 올바른 속성을 가진 클래스를 만드는 것과 같은 방법을 사용해야합니까? 4)이 유형 목표를위한 LinqDataSource보다 나은 옵션이 있습니까? 5) 또는 ListView를 누를 때마다 쿼리를 실행하는 것이 더 의미가 있습니까?

불확실한 점 사과드립니다. 나는 자유로운 시간의 무리가 잘못된 길로 향하게하기 전에 누군가 나를 똑바로 세울 수 있다면 정말 고마워. :)

+0

나는 데이터가 각 특정 될 것이라고 언급해야한다 고객 검색. –

답변

2

첫째, 나는 ASP.NET과 함께 제공되는 caching mechanism을 살펴볼 것을 제안한다. 데이터는 특정 사용자에 대해 비공개입니다.

둘째, 데이터베이스를 쿼리하기 전에 캐시에서 데이터를 가져오고 만료 규칙이있는 데이터를 캐시에 삽입 할 수있는 자연스러운 지점을 만들 수 있도록 응용 프로그램을 디자인하는 것이 좋습니다. 실제로 차이를 만들 것이라고 확신 할 때까지는 캐시에 물건을 넣지 마십시오.

실제로 데이터를 검색하고 차이가 나는 경우 캐싱을 사용하는 데 실제로 소요 된 시간을 측정합니다.

+0

+1, 두 점을 뒤집을지라도. :) 문제가 될 때까지 목록보기를 누를 때마다 쿼리를 확실히 실행하십시오. 현대 RDBMS는 많은 사람들이 신용을 부여하는 것보다 더 많은 방법을 처리 할 수 ​​있으며 종종 자신의 캐싱 계층을 제공합니다. –