서버에서 영구 객체 캐시(Persistent Object Cache) 설정하는 방법

워드프레스의 ‘사이트 건강’ 항목을 확인하다 보면 영구 객체 캐시(Persistent Object Cache)를 사용하라는 권장사항이 표시될 수 있습니다.

영구 객체 캐시는 데이터베이스에서 반복적으로 가져오는 데이터를 재사용해 서버의 처리 부담을 줄이는 기능입니다. 설정하려면 서버에서 캐시 서비스를 실행하고 워드프레스가 해당 서비스를 사용하도록 연결해야 합니다.

단순히 플러그인만 설치하는 것으로는 설정이 끝나지 않습니다.

이번 글에서는 Redis를 이용하는 방법을 기준으로, 호스팅 이용자가 확인할 사항과 서버를 직접 관리하는 경우의 설정 순서를 정리해보겠습니다.

영구 객체 캐시는 어떤 기능일까?

워드프레스는 페이지를 구성하면서 글, 설정값 등 여러 데이터를 불러옵니다.

이때 한 번 가져온 데이터를 임시로 보관해 같은 요청 안에서 재사용하는 기능이 객체 캐시입니다.

기본 객체 캐시는 일반적으로 해당 요청이 끝나면 사라집니다. 반면 영구 객체 캐시는 Redis나 Memcached 같은 별도의 저장소를 사용해 다음 요청에서도 캐시된 데이터를 재사용할 수 있도록 합니다.

여기서 ‘영구’라는 말은 데이터를 무기한 보관한다는 뜻이 아니라 개별 요청이 끝난 뒤에도 캐시가 유지된다는 의미입니다.

반복적인 데이터베이스 조회를 줄일 수 있으므로 서버 응답시간 개선에 도움이 될 수 있습니다만 실제 효과는 사이트 구성과 기존 병목에 따라 달라집니다.

더욱 자세한 설명은 아래 버튼을 통해 워드프레스 개발자 리소를 참조해보시면 좋겠습니다 🙂

페이지 캐시와 무엇이 다를까?

캐시 플러그인을 사용하고 있더라도 어떤 종류의 캐시가 활성화되어 있는지 구분해야 합니다.

구분 저장하는 대상 역할
페이지 캐시 완성된 페이지의 HTML 페이지를 매번 새로 만드는 작업을 줄입니다.
객체 캐시 데이터베이스 조회 결과 등 내부 데이터 페이지를 만드는 과정에서 반복되는 데이터 조회를 줄입니다.
PHP OPcache 컴파일된 PHP 코드 PHP 코드를 반복해서 해석하는 작업을 줄입니다.

서로 다른 단계에서 작동하므로 페이지 캐시를 사용한다고 객체 캐시까지 자동으로 활성화되는 것은 아닙니다. wp-config.php에 WP_CACHE를 설정하는 것만으로 Redis가 연결되는 것도 아닙니다.

영구객체캐시를 설정하기 위하여 우선 호스팅사에 아래 사항을 확인합니다.

Redis 설치하기

이용 중인 호스팅에서 Redis 지원 여부 확인하기

먼저 확인할 사항은 플러그인 종류보다 서버의 지원 여부입니다. 일반 웹호스팅은 서버 프로그램을 직접 설치할 권한이 제한될 수 있으므로, 제공되는 기능을 먼저 확인하는 편이 좋습니다.

호스팅 업체에는 다음과 같이 문의하거나 구글링해서 지원여부를 확인할 수 있습니다.

호스팅 업체 문의 예시

워드프레스 영구 객체 캐시를 사용하려고 합니다.

현재 이용 중인 호스팅 상품에서 Redis 또는 Memcached를 지원하는지 궁금합니다. 지원한다면 활성화 방법과 워드프레스 연결에 필요한 정보를 안내 부탁드립니다.

연결에 필요한 정보는 주로 서버 주소, 포트, 인증정보, 사용할 데이터베이스 번호입니다.

호스팅 업체가 전용 연동 기능이나 플러그인을 제공한다면 해당 안내를 우선 적용합니다.

만약 호스팅사에서 Redis를 지원한다면 우선 콘솔을 통해 터미널에 접속 후 아래 명령어를 입력합니다.
(저는 Vultr 서버를 사용중입니다.)

입력 후 보통 설치가 안되어 있기 때문에 command not found가 뜨게 됩니다.

서버에 Redis 설치하기

1. 서버에 SSH로 접속한 뒤 패키지 목록을 업데이트하고 Redis를 설치합니다.

2. 작업이 끝나면 Redis 서버를 설치합니다.

설치 진행 여부를 묻는 메시지가 나오면 Y를 입력하고 엔터.

3. 설치가 완료되면 같은 명령어를 입력해 설치된 버전을 다시 확인합니다.

4. 다음 명령어를 통해 Redis 서비스가 실제로 실행중인지 체크하고 상태가 active (running)이면 q를 누르고 터미널 화면으로 복귀합니다.

5. Redis 서버를 설치한 다음에는 PHP에서 Redis와 통신할 수 있도록 위 명령어를 통해 확장을 설치합니다. 제가 사용하는 PHP 버전은 8.4이므로 php8.4를 입력했으니 사용 환경에 맞는 버전을 확인해서 진행하시기 바랍니다.

6. 확장을 설치한 뒤에는 PHP-FRM을 재시작해 변경사항을 반영합니다. PHP-FPM은 서버에서 PHP 요청을 처리하는 서비스입니다.

7. 마지막으로 active (running) 상태인지 서비스 상태를 체크합니다.

Redis object Cache 플러그인 설치 후 연동

서버에 설치한 Redis를 워드프레스와 연결하기 위해 Redis object Cache 플러그인을 설치합니다.

서버에 Redis를 설치해도 워드프레스 자동으로 이를 객체 캐시 저장소로 사용하는 것이 아니기 때문에 연동 과정이 필요합니다 🙂

이해하기 쉽게 설명하면 Redis가 캐시 데이터를 보관하는 저장소라면 플러그인은 워드프레스 기반 웹사이트가 그곳에 데이터를 저장하고 다시 가져올 수 있도록 하는 도구입니다.

이를 통해 요청이 끝난 뒤에도 캐시를 재사용해 반복적인 데이터베이스 조회를 줄일 수 있습니다.

그 과정을 이해하기 쉽게 이미지를 통해 확인하고 싶으시다면 위 버튼을 클릭해보시기 바랍니다 🙂

Q&A

자주 묻는 질문

Q. PHP 8.4가 아니어도 같은 명령어를 사용하나요?

PHP 확장 패키지명과 PHP-FPM 서비스명은 실제 사용 중인 버전에 맞춰야 합니다. 서버에 여러 PHP 버전이 있다면 워드프레스 도메인에 적용된 버전을 기준으로 확인합니다.

Q. wp-config.php를 반드시 수정해야 하나요?

기본 연결정보로 정상 작동한다면 반드시 수정할 필요는 없습니다. 별도 주소나 인증정보를 사용하거나 여러 사이트의 캐시를 구분해야 하는 경우에는 환경에 맞는 설정이 필요합니다.

Q. Redis 확장을 설치했는데 플러그인에서 인식하지 못하면 어떻게 하나요?

실제 사이트가 사용하는 PHP 버전에 확장을 설치했는지 먼저 확인합니다. 이어서 해당 PHP-FPM 서비스를 재시작했는지 확인하고 플러그인 진단정보를 살펴봅니다.

Q. 페이지 캐시 플러그인은 계속 사용해도 되나요?

페이지 캐시와 객체 캐시는 역할이 달라 함께 사용할 수 있습니다. 다만 기존 플러그인이나 호스팅에서 객체 캐시도 제공하고 있다면 같은 기능을 중복으로 활성화하지 않도록 확인해야 합니다.