Grid의 expr 구문이 많은 경우 성능에 많은 영향을 줌 따라서 최소화 및 간결하게 작성해야 한다
데이터가 많은 경우 데이터 변경 및 스크롤 시 Grid영역이 다시 표현되므로 성능저하 원인

Expr이 하나라도 있는 경우 패이지 이동(스크롤,키 이동) 등 전반적으로 영향을 미침
Dataset Enableevent 사용시 주의사항


Grid Contents를 Dynamic하게 생성 시 Enableredraw 사용

데이터를 조회 및 저장 후 실제 서비스 수행시간 대비 응답속도가 느린 경우 점검사항
서비스 시작, 끝 callback 이후 수행 문장 별 수행시간 등을 로그로 남겨 원인 추적

대량의 데이터는 처리에 따른 대기 시간으로 사용자의 불편함과, 다량의 데이터 메모리 적재 한계, 대량 데이터는 페이징, 분할전송, 조회조건 제한 등 사전에 문제가 되지 않도록 개발방향 검토

파일 전송은 File up/down 컴포넌트 사용 권장
데이터셋을 이용하는 경우 일괄 처리에 따른 PC 및 서버 비용 증가
File up/down 기능
Dataset 이용 시 주의사항
상용제품 사용
대용량의 파일 사이즈를 전송하는 경우 서버 리소스 부족에 다른 장애 발생가능, 즉 파일 사이즈 제약필요
WRE 실행환경의 경우 application.open 즉 HTML5의 window.open을 사용한 경우 엔진 재로딩 및 파싱 단순 open창은 브라우저 기능(html)실행 권장
가급적, 브라우저 내부에서 실행되도록 창을 구성하거나, MDI 형태로 구성하도록 권장하며 Open창은 최소로 사용하도록 한다
화면 size변경, visible 속성 변경 또는 동적으로 컨텐츠를 생성하는 경우 브라우저는 해당 시점마다 redraw 및 reflow 발생, 즉 과도한 컨텐츠의 경우 이런 동작이 반복되는 경우 성능에 영향을 미침

이벤트 내에서 과도하게 많은 스크립트가 수행되면, 이로 인한 체감 성능이 떨어짐
특히, 그리드 및 데이터셋 등의 이벤트 내에서 점검이 필요하며, 다수의 이벤트가 중복되지 않게 주의
IE8 웹 브라우저의 경우 한번의 스크립트 수행 시 5백만 개 이상의 명령을 수행하는 경우 경고 메시지 출력, 메시지 출력을 방지하기 위해서는 스크립트가 과도하게 수행되지 않도록 처리 필요

IE9 이하 사용자를 위한 디자인 참고사항
WRE 실행환경에 해당됨
사용자의 브라우저 버전은 IE 10이상 사용을 권장
통신방식은 동기/비동기 방식을 선택하여 사용 가능하나, 비동기 방식을 권장함
동기(transaction) 통신은 통신 후 메인 thread가 locking되고 응답 후 처리를 함
통신의 경우 움직이는 이미지 등 대기 이미지가 보여지지 않는 현상이 발생하므로 비동기 권장
1초가 소요되는 동기통신을 5개 호출하는 것보다 5개를 비동기로 요청하는것이 더 빠른 응답결과를 보임

주로 개발 시에는 테스트 데이터 량이 적어 동기통신의 경우에도 큰 영향이 없으나, 실제 운영환경에 적용 시 주요이슈 문제 중 하나
NEXACRO는 XML, SSV, Binary(NRE 전용) 통신포멧 지원
개발자 도구 또는 네트워크 분석 툴 등으로 확인을 위해서는 XML통신이 식별이 쉬울 수 있으나, 사용자 테스트 서버 및 운영서버에서는 SSV통신을 권장
SSV 통신은 CSV통신과 유사한 형태로 XML이 불필요한 TAG를 제거하므로 적은 네트워크 비용 사용

송신은 transaction API, 수신은 서버 API인 PlatformResponse에서 통신 방식을 지정한다
서버 framework 구성 시 request 방식에 따라 reponse방식을 지정하면 효율적이다
(즉, client가 SSV이면 server도 SSV, client가 XML이면 server도 XML)
SSV 통신 포멧인 X-API의 설정 값 변경이 아닌 String연산을 통해 response해야 성능향상 효과를 볼 수 있다

대용량 데이터 처리시 Chunked 방식 적용

Chunked 된 데이터를 수신중에 onload 이벤트가 발생하면 DSLoadEventInfo의 reason 속성값에 1이 전달된다
데이터를 모두 수신하여 이벤트가 발생하면 DSLoadEventInfo의 reason 속성값에 0이 전달된다
브라우저에서 제공하는 gzip방식을 이용하여 패킷 사이즈 절감
약 70%의 압축률을 보이나 이미지 등은 제외한 텍스트 형식을 js만 적용


주의 : gzip을 중복해서 사용하는 경우 포맷 오류 발생
일정 개수의 서버 세션(Connect)를 유지하여, 커넥션 시간을 단축
네트워크 성능이 좋은 경우에는 의미가 없으나, 성능 저하 및 SSL통신과 같은 인증이 필요한 경우 필요

NRE의 경우 xadl의 usehttpkeepalive 속성으로 변경이 가능하다
다만, framework js등은 기본적으로 keepalive로 동작된다
Etag는 Last-modified와 같이 브라우저 캐시에 저장된 파일과 웹 서버의 파일과 일치 여부를 식별(Object의 동일성을 식별하는데 사용하는 값)

사례로 본 누수현상 및 해결방법

결론적으로 MS의 공식적인 답변은 "웹 브라우저 특성상 스크립트나 HTML 코드를 100% 완벽하게 관리해 주지 않는다"이다
외부모를 사용을 위해 WebBrowser 컴포넌트를 사용한 경우

rMateChart 사용 시 Div방식으로 구현