2012-02-07 2 views
0

우리는 126 행과 11 열의 그리드를 가지고 있습니다. 그리드는 대략 수천 개의 텍스트 박스로 편집 가능합니다 (나는 나쁜 디자인을 이해하지만, 클라이언트는 확고합니다). 그래서이 텍스트 상자에 jQuery 사용자 정의 함수를 호출하여 격자의 길이와 너비에 대한 합계와 곱셈을 계산합니다. 사용자 지정 방법은 그룹의 두 개 또는 세 개의 행에 적용되어 부분합과 합계를 제공합니다. 방대한 스크립트가 생성 되었기 때문에 페이지가 크게 줄어 들었습니다. 즉, 텍스트 상자에 숫자를 입력하면 반응이 2 초가 걸리고 결과를 지정된 텍스트 상자에 채우는 것을 의미합니다.gridView에 jQuery가 적용되어 성능이 저하됩니다.

그리드가 Updatepanel 내부에 있으므로 .live() 메서드를 사용하고 있습니다. 끔찍한 성능을 최적화하는 데 필요한 도움이 많이 필요하며 대단히 감사하겠습니다.

답변

0

먼저 아래 사항은 모두 추측입니다. 병목 현상이 어디에 있는지보기 위해 페이지를 프로 파일링 했습니까? 이 URL에서 실제 상황을 볼 수있는 공개 URL이 있습니까?

이벤트 첨부와 관련하여 .delegate() 또는 .on()으로 전환하면 약간 개선 될 수 있습니다. 그리드에 가능한 한 가까이에 이벤트를 연결하십시오. 나는 그것이 많이 도움이 될지 의심 스럽다.

기본적으로 스프레드 시트를 구현하려는 것처럼 들리므로 스프레드 시트에서 사용하는 것과 동일한 기술을 권합니다. 종속성 그래프를 사용하여 셀이 변경 될 때 실제로 재 계산되어야하는 것을 판별하십시오. 자주 변하지 않는 것들에 대한 중간 결과를 저장하십시오. 한 번에 모든 것을 다시 계산하지 말고 setTimeout을 사용하여 한 번에 모눈의 몇 행을 계산하십시오.

+0

많은 분들께 감사드립니다. Dave, 우리는 실제로 스프레드 시트를 구현하고 있습니다. 그 문제에 대한 힌트 나 튜토리얼을 찾을 수있는 링크처럼 의존성 그래프 리소스를 가르쳐 주시겠습니까? 그리고 우리는 jQuery 1.6.2를 사용하고 있습니다. 그렇습니다. 우리는 .delegate()를 시도했지만 그리드가 너무 커서 도움이되지 않는 것 같습니다. .on은 jquery 1.7+에 대한 것입니다. – Bilal

+0

나는 그것에 대한 좋은 참조를 모른다. 저는 Microsoft 내부의 Excel 그룹과 이야기를 나누었습니다. 그곳에서 기본 정보를 얻었습니다. :) 그러나 양식을보고 다른 필드를 기반으로 어떤 필드가 변경되는지 확인할 수 있어야합니다. 따라서 부분합이 여러 개인 하위 폼이있는 경우 부분합을 기억하고 실제로 변경된 부분 만 다시 계산하십시오. –

관련 문제