2012-08-29 6 views
0

더 큰 시스템에서 워크 플로의 일부로 2 페이지 설정이있는 성능 문제가 있습니다. 이 섹션에서는 사용자가 자신의 매개 변수를 선택할 수 있도록 보고서를 렌더링하는 데 전념합니다.느린 aspx 페이지로 리디렉션

Page1.aspx은 보고서의 매개 변수 정보를 수집합니다. 양식에 제출 된 정보를 취합하여 검증합니다. 확인의 유효성을 확인하면 선택 사항을 XML로 DB에 저장 한 다음 쿼리 문자열에 실행 ID와 함께 Page2.aspx으로 리디렉션합니다. 간단하고 성능이 좋습니다.

Page2.aspx는 DB에서 ID를 가져오고 (밀리 초를 복용)을 수정 ReportDocument 객체 그때 우리는 다음 PDF 또는 DOC 나 XLS 다운로드 (출력 형식이 Page1.aspx 결정된다)로 보고서를 렌더링 ExportToHttpStream 전화를 수분을. ExportToHttpStream 메서드의 성능은 보고서가 작성된 방식과 대상 시스템의 DB 인덱스 때문에 매우 열악합니다. 이것은 현재 내 통제 밖이지만, 나는 그들이 일하고 있다고 약속한다.

따라서 Page1.aspx의 제출 단추를 누르면 다운로드가 시작되기 전에 매우 긴 시간이 지연되는 문제가 있습니다. 그런 다음 사용자가 제출 단추를 다시 눌러 문제가 있다고 생각하면 다시 작성됩니다.

Page1.aspxPage2.aspx으로 리디렉션해야한다고 생각합니다. Page2.aspx은 마스터 페이지 가구와로드를 div으로 렌더링해야하며 저장 대화 상자가 자동으로 팝업되기 전에 보고서가 백그라운드에서 비동기 적으로 렌더링되어야합니다. 그러면로드 div를 '생성 된 보고서'로 변경하고 싶습니다. 여기를 클릭하십시오. 돌아 가라.

이렇게하는 것이 가장 좋은 방법이라면 어떻게 전체 페이지를로드 한 다음 비동기 적으로 보고서를 요청할 수 있습니까? 나는 여기에 어떤 제안에 열려 있습니다.

답변

0

두 가지 대답 모두 올바른 방향으로 나아가고 연구 할 수있는 근거를 제공했습니다.

jQuery fileDownload by John Culviner

이 나에게 다음 페이지 구조 허용 : 내 솔루션은 유사한 솔루션을 촉진하기 위해 존 Culviner에서 fileDownload 플러그인을 사용하여 포함

  1. Page1.aspx, 주름을하고 보고서 및 풋 매개 변수의 유효성을 확인 오라클에 넣습니다.
  2. Page2.aspx, 쿼리 문자열 셋업 3 hidden div을 통해 runid (db의 매개 변수에 대한 포인터)를 전달하는 동안. 적재, 오류 및 성공.

이 스크립트는이 시점에서 사용되었습니다. jQuery는 먼저 로딩을 div으로 설정 한 다음 플러그인을 호출합니다. 플러그인은 동적으로 iframe을 만들고 Page3.aspx에서 이진 (xls/doc/pdf)을 다운로드합니다. 그런 다음 성공 콜백 또는 실패를 발생시킵니다. 성공 콜백은 Page3.aspx의 응답 끝에 설정된 쿠키를 사용하여 시작됩니다.

나는 플러그인이 AJAX에서 옥텟 스트림에 해당하지 않는 제한을 피하면서 'text/plain' AJAX 호출을 jQuery로 사용하여 다운로드를 언급했다고 생각합니다.

어떤 방법으로도 가장 깨끗한 솔루션이 아니며 1 비트를 저하시키지 않지만 제어 된 인트라넷의 사용자에게 매우 반응이 빠르고 만족스러운 UI를 제공합니다.

0
iframe 내부

한번에 로딩 Page2.aspx 및 대기 표시기 표시하고 Page2.aspx 다운로드

1

당신은 Page2.aspx에 보고서를로드하고 처리있는 동안 로딩 메시지를 표시하는 아약스를 사용할 수 있습니다 후 그것을 숨기기 위해 jQuery를 사용합니다.

jQuery.load() 방법을보십시오. 이것은 당신이하고자하는 것을 성취하는 가장 쉬운 방법 일 수 있습니다.

Page1.aspx

이 - 매개 변수를
Page2.aspx 수집 - 보고서보기를, 아약스를 통해 Page2Details.aspx를 호출합니다.

관련 문제