Nexacro

Nexacro Grid 데이터 표시 속도 개선 방법

지오준 2024. 9. 9.
반응형

Nexacro Grid 데이터 표시 속도 개선 방법

Nexacro에서 Grid 컴포넌트는 대량의 데이터를 표시할 때 성능 이슈가 발생할 수 있습니다. 특히, 다량의 데이터를 처리하거나, 복잡한 연산을 동반할 경우 그 속도는 눈에 띄게 느려질 수 있습니다. 하지만 몇 가지 최적화 기법을 통해 그 성능을 크게 개선할 수 있습니다. 이 글에서는 Nexacro Grid의 데이터 표시 속도를 개선할 수 있는 다양한 방법을 소개하고, 간단한 샘플 코드를 제공하겠습니다.


1. 데이터 페이징 처리 (Paging)

설명:

한 번에 모든 데이터를 로딩하는 대신, 필요한 만큼만 부분적으로 로딩하는 방법입니다. 대용량 데이터를 클라이언트에 한꺼번에 전달하는 것은 성능 저하의 주요 원인 중 하나입니다. 이를 해결하기 위해, 서버에서 일정 크기의 데이터만 요청하여 로드하는 페이징 기법을 사용할 수 있습니다.

샘플 코드:

// Grid의 페이징 처리 예시
function loadPageData(pageIndex) {
    var pageSize = 100; // 페이지 당 로드할 데이터 수
    var startRow = pageIndex * pageSize;
    
    var params = {
        startRow: startRow,
        pageSize: pageSize
    };

    // 서버에서 데이터 로드 (AJAX 혹은 Nexacro 트랜잭션 이용)
    var dataset = new Dataset();
    dataset.loadFromServer("getPagedData.do", params);

    // Grid에 데이터 바인딩
    myGrid.set_binddataset(dataset);
}

설명:

위 코드는 서버에서 페이지 단위로 데이터를 불러오는 방식입니다. 한 번에 모든 데이터를 가져오는 것이 아니라, 사용자가 보는 페이지에 해당하는 데이터만 로드하여 Grid에 표시하는 방식입니다. 이는 초기 로딩 속도와 메모리 사용량을 크게 줄일 수 있습니다.


2. Lazy Loading (지연 로딩)

설명:

Lazy Loading은 사용자가 데이터를 스크롤할 때마다 필요한 데이터만 로드하는 방식입니다. Grid의 스크롤을 끝까지 내렸을 때 다음 데이터를 서버로부터 로드하여 추가적으로 보여줍니다.

샘플 코드:

// 스크롤 이벤트를 이용한 Lazy Loading
function onGridScroll() {
    var lastVisibleRow = myGrid.getLastVisibleRow();  // 마지막으로 보이는 행
    var totalRowCount = myGrid.getBindDataset().getRowCount();  // 전체 데이터 개수
    
    if (lastVisibleRow >= totalRowCount - 1) {
        loadMoreData();  // 더 많은 데이터를 로드하는 함수
    }
}

function loadMoreData() {
    var dataset = myGrid.getBindDataset();
    var lastRow = dataset.getRowCount();
    
    var params = {
        startRow: lastRow,
        pageSize: 100
    };

    // 서버에서 추가 데이터 로드
    dataset.loadFromServer("getMoreData.do", params);
}

설명:

이 코드는 스크롤이 Grid의 마지막까지 내려갔을 때 새로운 데이터를 서버에서 로드하여 추가로 보여줍니다. 이를 통해 한 번에 모든 데이터를 로드하는 대신, 필요할 때만 데이터를 불러옴으로써 초기 로딩 시간과 메모리 사용량을 최적화할 수 있습니다.


3. 화면 갱신 중지 (Grid 갱신 최소화)

설명:

Grid는 데이터를 로드하거나 수정할 때마다 화면을 갱신합니다. 대량의 데이터가 있을 경우, 이 화면 갱신이 반복되면서 속도가 느려질 수 있습니다. 이 문제를 해결하기 위해 데이터가 변경되는 동안 화면 갱신을 일시적으로 중지할 수 있습니다.

샘플 코드:

// 화면 갱신 일시 중지 및 재개
myGrid.set_enableevent(false);  // 이벤트 중지 (화면 갱신 중지)
myGrid.set_enableredraw(false);  // 화면 갱신 일시 중지

// 데이터를 변경하거나 로드하는 작업
dataset.addRow();
dataset.setColumn(0, "column1", "value1");

// 화면 갱신 재개
myGrid.set_enableredraw(true);
myGrid.set_enableevent(true);

설명:

set_enable_redraw(false)로 Grid의 화면 갱신을 일시적으로 중지한 후, 데이터를 처리합니다. 데이터를 모두 처리한 후 set_enable_redraw(true)로 화면 갱신을 다시 시작하면, 불필요한 화면 갱신을 방지하여 속도를 최적화할 수 있습니다.


4. 필요 없는 컬럼 숨기기 및 축소

설명:

모든 컬럼을 표시하지 않고, 필요 없는 컬럼을 숨기거나, 기본적으로 표시할 컬럼을 최소화하는 것도 속도 향상에 도움이 됩니다. 특히, 화면에 표시되지 않는 컬럼도 데이터를 처리하는데 영향을 줄 수 있으므로 꼭 필요한 컬럼만 표시하는 것이 좋습니다.

샘플 코드:

// 필요 없는 컬럼 숨기기
myGrid.setCellProperty("Body", 0, "visible", false);  // 첫 번째 컬럼 숨기기

설명:

이 코드는 Grid에서 첫 번째 컬럼을 숨깁니다. 사용자가 보지 않아도 되는 데이터를 굳이 화면에 렌더링할 필요가 없기 때문에 성능 향상에 도움이 됩니다.


5. 속도 최적화를 위한 기타 팁

  • 그리드 행 버퍼 설정: grid.set_rowheight() 등의 메소드를 통해 그리드의 행 높이를 고정하면, 그리드 렌더링 성능을 향상시킬 수 있습니다.
  • 데이터셋의 데이터 캐싱: 동일한 데이터를 자주 불러오는 경우, 데이터셋에 데이터를 캐싱하여 중복 로드를 피할 수 있습니다.
  • 데이터셋의 필터링 및 정렬: 데이터셋을 서버에서 필터링하거나 정렬하여 불필요한 연산을 줄입니다.

결론

Nexacro Grid의 성능을 최적화하기 위해서는 한꺼번에 많은 데이터를 로드하기보다는 페이징, Lazy Loading, 화면 갱신 제어 등 다양한 기법을 활용하여 데이터를 효율적으로 처리하는 것이 중요합니다. 위에서 제시한 여러 기법들을 적절히 조합하면, Grid의 성능을 크게 향상시킬 수 있습니다.

반응형

'Nexacro' 카테고리의 다른 글

Nexacro에서의 에러 처리 개요  (0) 2024.09.17
Nexacro 개발시 주의할 사항  (0) 2024.08.25

댓글