2009-03-10 3 views
1

필터링 및 정렬 할 수있는 수천 개의 행이있는 표가 있습니다. 각 행에서 세부 정보 버튼을 클릭하면 페이지에 대한 자세한 정보가 포함 된 새 페이지가 나타납니다. 이 버튼이기 때문에 가운데 탭이나 오른쪽 버튼을 클릭하여 새 탭에서 열 수 없습니다. 또한 다시 클릭하면 필터 및 검색 결과가 손실됩니다.검색 및 세션 상태와 관련된 아키텍처 질문

이 문제를 해결하기 위해 다음을 고려했습니다. 버튼을 링크로 전환하고 필터링 및 검색시 게시물 요청 대신 get을 사용하십시오. 이렇게하면 오른쪽 클릭이나 중간 클릭으로 새 페이지로 전환 할 수 있으며 링크를 정상적으로 따라 가면 다시 정상적으로 작동합니다.

그러나이 변경 사항은 적용되지 않았습니다. 세부 정보 페이지에 '다음 결과/이전 결과'버튼 세트를 추가하라는 메시지가 표시되어 탐색 할 수 있습니다. 우아한 솔루션은 아니지만, 적어도 작동 할 것입니다.

세부 정보 페이지에 쿼리 문자열 매개 변수를 추가하고 필터를 기반으로 검색 쿼리를 다시 생성하고 코드에서 다음 및 이전 결과를 얻을 수 있도록 제안했습니다.

팀 구성원이이 솔루션을 사용했습니다. 그는 데이터베이스를 다시 쿼리하는 것이 서버 리소스 낭비라고 생각합니다. 그 대신 결과 목록을 포함하는 세션 변수를 추가하는 솔루션이 제안되었습니다. 그런 다음이를 사용하여 탐색 할 수 있습니다.

네비게이션을 깨지 않고 여러 개의 탭을 열 수 없으며 실시간으로 목록에 새로운 결과가 추가되지 않기 때문에 문제가 발생했습니다. 또한, 최적화에 대해 걱정한다면, 세션을 메모리를 사용하고 서버 복제를 방지하기 때문에 세션을 사용하는 것이 가장 좋습니다. 결과를 다시 데이터베이스에 저장하지 않으면됩니다.

최상의 솔루션은 무엇입니까?

답변

2

세션이 우승자처럼 들리지 않으며 많은 사용자로 확장되지 않습니다.

데이터베이스를 반복적으로 사용하는 것은 불필요한 것처럼 보일 수 있지만 비용에 따라 달라집니다 - 얼마나 많은 사용자가 얼마나 자주 새로 고침/필터링하고 해당 쿼리의 비용은 얼마입니까?

쿼리 스트링을 사용하는 경우 매개 변수별로 페이지를 캐시 할 수 있습니다.

해당 버튼의 AJAX 코드에서 세부 정보를 검색하는 것은 어떨까요? 기본 그리드를 그대로두고 div/패널 또는 새 창/탭에 세부 정보를 표시하십시오.