AEM 사이트 성능 최적화

이 문서에서는 사이트의 성능을 향상시킬 수 있는 방법에 중점을 둡니다. 가장 많은 성능 문제를 야기시킨 Adobe Experience Manager(AEM) 애플리케이션 및 아키텍처의 다양한 측면을 강조했습니다. 여기에 나열된 최적화를 구현하면 이러한 일반적인 문제를 방지할 수 있습니다.

설명 description

환경

Adobe Experience Manager

문제/증상

AEM 사이트 성능을 최적화하는 방법

해결 방법 resolution

사이트 성과

  1. 수행 정기 유지 보수.
  2. 백엔드 서비스 호출 내결함성 - 참조 이 문서 을 참조하십시오.
  3. 타사 UI 프레임워크 사용 시 주의하십시오. 여러 고객이 AEM/Sling 웹 프레임워크 위에 전체 레이어를 구축하는 라이브러리를 사용하거나 구축합니다. UI의 특정 기능(예: ACS Commons)을 대상으로 하는 유틸리티가 아니라 AEM에서 애플리케이션을 구현하는 방법을 근본적으로 변경하는 프레임워크를 참조합니다. 이러한 프레임워크를 사용하면 개발 시간이 다소 단축될 수 있지만 성능에 부정적인 영향을 미칠 수 있다는 것을 여러 번 확인했습니다.
    서드파티 프레임워크는 Adobe에서 지원되거나 테스트되지 않습니다. 이러한 프레임워크를 사용하거나 구현할 때는 실제 트래픽으로 응용 프로그램을 충분히 로드하고 강조해야 합니다.

클라이언트측 성능

  • AEM 클라이언트 라이브러리 사용 및 최적화 - 클라이언트 라이브러리는 사이트에서 CSS 및 JavaScript 코드의 관리 및 최적화를 중앙에서 관리할 수 있는 손쉬운 방법입니다.

    • 포함 클라이언트 라이브러리를 통합하여 더 적은 수의 파일로 통합할 수 있습니다.
    • 축소 라이브러리.
  • CSS를 HTML 헤드 태그에 넣으십시오 이렇게 하면 로드 후 페이지가 깜박거리고 다시 돌아가지 않습니다.

  • JavaScript 스크립트 를 본문 태그의 끝에 포함하거나 다음을 추가합니다. 비동기 스크립트 속성 - 이렇게 하면 페이지가 렌더링되는 동안 브라우저가 JavaScript 파일을 동시에 로드할 수 있습니다.

  • 도메인 조각 구현 - 기본적으로 웹 브라우저는 페이지를 로드하는 동안 도메인당 최대 병렬 요청 수를 제한합니다. 이로 인해 CSS, JavaScript 등과 같은 리소스가 많은 경우 페이지 로드가 지연될 수 있습니다. 페이지가 렌더링되기 전에 로드되어야 합니다. 도메인 분할은 이 문제를 해결하는 데 도움이 되는 솔루션입니다. 도메인 분할은 여러 하위 도메인을 통해 사이트에 CSS 및 JavaScript와 같은 파일을 포함하는 곳입니다.

    • 예:

      code language-none
      script src="//includes1.yoursite.com/etc/clientlibs/test.js"/script
      script src="//includes2.yoursite.com/etc/clientlibs/test2.js"/script
      
    • 사용 ACS Commons - 정적 참조 재작성기 도메인 분할을 구현합니다.

  • 오랜 기간 동안 JavaScript 및 CSS 캐시 - Javascript 및 css를 장기간 캐시할 수 있도록 하려면 다음을 사용합니다. ACS Commons - Versioned Clientlibs.

  • 다음을 참조하십시오. Google PageSpeed 규칙 설명서 를 참조하십시오.

  • 이 항목 보기 AEM Gems 세션 를 참조하십시오.

작성자 인스턴스 편집 성능

  1. 수행 정기 유지 보수.
  2. 페이지의 총 구성 요소 감소 - 작성자 인스턴스의 AEM 페이지에 개별적으로 편집 가능한 구성 요소가 수백 개 로드되면 편집기 UI의 성능에 큰 영향을 줍니다. 응용 프로그램을 디자인할 때는 사이트에 더 구체적이고 편집자가 사용하기 쉬운 구성 요소를 선호하며 하위 구성 요소가 많은 일반 구성 요소와 비교해 보십시오.
  3. 컨테이너 구성 요소의 여러 수준(단락 시스템, 반응형 그리드, 경험 조각)을 중첩하지 마십시오 - 컨테이너 구성 요소의 여러 수준을 중첩하지 마십시오. 단락 시스템 또는 반응형 그리드를 중첩하면 /editor.html 페이지가 느리게 로드됩니다. 특히 단락 시스템 또는 반응형 그리드에 긴 컨텐츠 목록이 포함된 경우가 여기에 해당합니다. 단락 시스템을 중첩하는 대신 다른 페이지의 콘텐츠를 참조하는 응용 프로그램을 디자인합니다. 경험 조각 사용을 선택한 경우 이러한 조각을 중첩하지 않거나 을 사용합니다 빌딩 블록. 중첩 경험 조각은 동일한 성능 제한 사항의 영향을 받습니다.

캐시 최적화

일반적인 AEM 사이트 아키텍처에서 HTTP 요청은 여러 캐시를 거쳐 최종적으로 AEM 게시 인스턴스에 도달합니다. 사이트 성과를 개선하는 가장 쉬운 방법 중 하나는 사이트의 정확성을 최적화하는 것입니다.

다음을 참조하십시오 이 문서 사이트에서 캐싱을 최적화하는 방법에 대한 자세한 단계입니다.

사용자 지정 JCR 쿼리에 대한 인덱스 최적화

성능을 개선하는 또 다른 최적화 방법은 사용자 지정 JCR 쿼리에 대해 Oak 색인을 구성하고 최적화하는 것입니다. 애플리케이션 내에서 JCR 쿼리를 사용하는 경우 이는 일반적으로 필수 작업입니다.

사용자 정의 애플리케이션 쿼리에 대한 Oak 색인을 구현하는 방법은 공식 설명서(1 및 2)를 참조하십시오.:

QueryBuilder guessTotal

AEM QueryBuilder를 사용하고 있고 쿼리가 많은 결과를 반환할 것으로 예상되면 항상 루트 PredicateGroup에 guessTotal 속성을 설정해야 메모리 사용이 줄어듭니다. 자세한 내용은 이 문서의 공식 설명서를 참조하십시오. Query Builder API

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f