OkSft

Magento & Shopify eCommerce Solution

마젠토의 캐시와 리인덱스

캐시와 인덱스 둘 다 사이트의 성능 개선과 부하를 줄이기 위해 사용되는 기능들입니다
Magento
May 19, 2023

이번장에선 캐시와 인덱스에 대한 설명과 사용법을 알려드리겠습니다. 둘 다 사이트의 성능 개선과 부하를 줄이기 위해 사용되는 기능들입니다.

Cache란?

마젠토의 웹페이지를 접속하면 서버에서는 DB에 접속해 데이터를 가져오고 여러 설정 파일을 읽어주며 또한 프로그램으로 HTML등의 데이타 만들어 주는행위를 반복합니다. 당연히 사용자가 많아지면 서버의 자원이 많이 사용되고 응답 속도가 느려집니다. 이런 경우를 대비해 미리 DB의 데이터와 설정 파일과 일부 HTML을 미리 파일 또는 메모리에 저장해 두고 필요시마다 사용하면 서버 자원과 응답속도를 높일 수 있습니다. 이때 저장된 데이터를 캐시라고 합니다.

Reindex란?

마젠토의 장점은 확장성이라고 말씀드렸습니다. 슬프게도 확장성은 양날의 검이 될 수도 있습니다. 마젠토에서는 확장성을 위해 일부 DB의 구조를 EAV 데이터 모형화 기법을 사용해 만들어졌습니다. 마젠토는 EAV로 유연성과 확장성을 확보한 대신 DB의 성능 저하를 얻었습니다. 하지만 마젠토에서는 DB의 성능 저하를 해결하기 위해 별도의 조회 테이블을 만들어 사용합니다. 이러한 테이블을 생성하고 데이터를 입력하는 프로그램을 인덱서라고 합니다. 그리고 마젠토 커뮤니티에서는 인덱서를 다시 실행하는 것을 리인덱스 한다고 말합니다.

언제 캐시를 지우고 리 인덱스 하면 될지 상단 노티바를 통해 확인할 수 있습니다

Cache Clear

캐시는 지우고 다시 생성해야 하는 일이 자주 발생합니다. 마젠토에서는 관리자 페이지를 통해 캐시를 삭제할 수 있게 지원합니다. 삭제된 캐시는 캐시 삭제 후 최초로 웹페이지에 접속하는 사용자에 의해 다시 생성됩니다. 즉 우리는 캐시를 지우는 방법만 알면 됩니다.

이제 "ADMIN > SYSTEM > Tool > Cache Management"로 이동합니다.

좌측을 보면 여러 종류의 캐시가 보입니다. 우린 우리에 필요한 것만을 먼저 익히겠습니다. 우측 "status"를 보시면 "INVALIDATED" 과 "ENABLED"가 보입니다. 이때 "INVALIDATED"로 표시된 캐시의 좌측 체크박스를 체크 후 상단의 선택 박스를 "REFLASH"로 변경 후 "SUBMIT"을 클릭해 주시기를 바랍니다.

Reindex

상품. 카테고리등을 변경 시 마다(인덱스 테이블에 저장하기 위한 데이터가 생성 또는 변경 시) 리인덱스가 필요합니다. 마젠토 커뮤니티 버전에서는 기본적으로 관리자 페이지를 통한 리인덱스 기능을 제공하지 않습니다. 이제 "ADMIN > SYSTEM > Tool > Index Management"로 이동합니다.

우린 우리에 필요한 것만을 먼저 익히겠습니다 "staus" 를 보겠습니다.
- "REINDEX REQUIRED": 리인덱스가 필요한 상태를 나타냅니다. 즉 해당 표시가 되어있을경우 실제 데이타와 노출되는 전자 상거래의 값이 다를 수가 있습니다.

"Mode"를 보겠습니다. 모드엔 2가지 있습니다.
- "Update on Save": 관리자 등 프로그램 등의 정상적인 방법으로 데이터가 변경 시 즉시 리인덱스를 진행합니다.
- "Update by Schedule" : 관리자 등 프로그램 등의 정상적인 방법으로 데이터가 변경될 시 관련 데이터의 id를 별도의 테이블에 저장 후 주기적인 배치 작업을 통해 한 번에 처리합니다.

그럼 어느 것으로 사용하는 것이 좋을까요? 마젠토에서는 "Update by Schedule"을 사용할 것을 권장하고 있습니다.

마치며

마젠토 운영 시 일어나는 정말 많은 질문의 20% 이상이 캐시와 리인덱스로 해결됩니다. 꼭 기억하시기 바랍니다

정호진 작성 | 무단복제, 배포 금지

해당 문서의 일부내용은 『Magento Tutorial Book, 정호진』과 『Magento DevDocs』에서 발췌 하였습니다. 발췌한 내용에 대한 저작권은 발췌한 곳에 있음을 밝힘니다.

Magento
Back