캐싱 플러그인 JW-PowerCache
JW PowerCache는 그누보드 7의 페이지·쇼핑몰 카테고리·게시판 목록 응답 속도를 높이는 캐시 플러그인입니다. 기존 캐시 설정을 그대로 활용하며, 콘텐츠 변경 시 관련 캐시를 자동으로 무효화합니다.
JW PowerCache
반복 조회는 더 빠르게, 서버 부담은 더 가볍게.
JW PowerCache는 그누보드 7의 주요 API 응답을 캐시해 응답 속도를 높이고, 반복적인 데이터베이스 조회와 서버 연산을 줄이는 오픈소스 플러그인입니다.
페이지·쇼핑몰 카테고리·게시판 목록처럼 자주 조회되는 콘텐츠를 효율적으로 제공하면서, 콘텐츠 변경 감지와 사용자별 권한 확인을 함께 처리합니다.
핵심 기능
1. 자주 조회하는 콘텐츠의 응답 캐시
공개 페이지 상세, 쇼핑몰 카테고리 목록·상세, 게시판 목록의 API 응답을 캐시합니다.
같은 내용을 요청할 때마다 원본 데이터를 조회하고 응답을 다시 만드는 작업을 줄여, 반복 방문과 목록 탐색 시 빠른 응답을 제공하는 데 도움을 줍니다.
2. 콘텐츠 변경에 따른 자동 캐시 무효화
지원되는 그누보드 변경 경로에서 페이지·카테고리·상품·게시글 등의 변경을 감지하고, 관련 캐시를 자동으로 무효화합니다.
캐시 만료시간이 끝날 때까지 기다리지 않고, 변경된 데이터를 바탕으로 새로운 응답을 제공하도록 설계했습니다.
3. 로그인 사용자 대응과 권한 보호
게시판 목록은 비회원뿐 아니라 로그인 사용자도 캐시를 활용할 수 있습니다.
- 비회원과 로그인 사용자의 응답을 분리합니다.
- 로그인 응답은 사용자별로 구분해 저장합니다.
- 캐시 응답을 제공하기 전에도 게시판 읽기 권한을 확인합니다.
- PC·모바일의 목록 표시 개수 차이도 구분합니다.
캐시를 사용하면서도 사용자별 표시와 접근 권한이 섞이지 않도록 처리합니다.
4. 기존 그누보드 캐시 환경 그대로 활용
그누보드 관리자가 선택한 파일·Redis·Memcached 캐시 저장소를 그대로 사용합니다.
플러그인 전용 캐시 서버나 별도의 Redis 연결 설정을 추가할 필요 없이, 기존 운영 환경에 맞춰 적용할 수 있습니다.
여러 웹 서버를 운영하는 환경에서는 Redis 같은 공유 저장소를 사용합니다.
5. 캐시 장애를 고려한 안전장치
캐시 저장소에 문제가 생기면 원본 처리 경로로 전환해, 캐시 장애가 사이트 오류로 이어지는 것을 방지하도록 설계했습니다.
캐시 상태의 일관성을 확인할 수 없는 경우에는 캐시 응답을 사용하지 않으며, 미처리 변경 내역을 재처리하는 복구 기능도 제공합니다.
6. 진단부터 적용까지 운영 기능 제공
처음에는 응답을 저장하지 않는 관찰 모드로 시작하고, 진단 후 실제 캐시 사용을 활성화할 수 있습니다.
- 현재 상태 및 운영 환경 진단
- 관찰·활성·우회 모드 전환
- 사이트·페이지·카테고리·게시판 범위별 캐시 무효화
- 미처리 변경 내역 재처리
- 백업 복구 후 캐시 상태 정리
운영 상황에 맞게 캐시를 적용하고 관리할 수 있습니다.
도입으로 기대할 수 있는 효과
응답 대기시간 감소
반복 조회되는 API 응답을 재사용해 페이지와 목록 데이터를 더 빠르게 전달합니다.
데이터베이스 부하 감소
캐시로 처리할 수 있는 요청의 중복 조회를 줄여 DB 작업량을 낮춥니다.
서버 자원 사용 효율 개선
동일한 응답을 반복 생성하는 작업을 줄여 PHP 처리와 CPU 사용 부담을 완화합니다.
캐시 관리 부담 완화
지원되는 콘텐츠 변경을 자동으로 감지하므로, 일반적인 콘텐츠 운영에서 수동 캐시 정리 필요성을 줄입니다.
실서버에서 확인한 성능
베타 버전의 실서버 공개 HTTPS 비교 테스트에서 주요 API 응답시간(p95)이 49.0~68.9% 단축됐습니다.
| 측정 대상 | 캐시 미사용 | 캐시 사용 | 응답시간 단축 |
|---|---|---|---|
| 페이지 상세 | 408.2ms | 208.0ms | 49.0% |
| 카테고리 목록 | 576.9ms | 179.6ms | 68.9% |
| 카테고리 상세 | 453.6ms | 182.7ms | 59.7% |
| 게시판 목록 | 568.2ms | 256.7ms | 54.8% |
같은 측정 구간의 서버 전체 지표에서도 부하 감소가 관찰됐습니다.
- PHP-FPM CPU 누적 사용시간 27.1% 감소
- MySQL 질의 수 38.7% 감소
- 총 2,880건의 요청에서 HTTP 오류 및 응답 내용 불일치 0건
측정은 0.3.0-beta.1 및 당시 G7 시험 구성에서 동시 사용자 5명, 전체 초당 8회 요청, 모드별 3회 중앙값 기준으로 진행했습니다.
p95는 요청의 95%가 해당 시간 이내에 완료됐다는 의미입니다.
CPU·DB 수치는 다른 요청이 포함될 수 있는 서버 전체 참고 지표이며, 실제 효과는 운영 환경에 따라 달라집니다. 전체 페이지 로딩 속도나 최대 처리량을 보장하는 수치는 아닙니다.
지원 및 이용 안내
- 지원 환경: 그누보드 7.0.9 이상
- 지원 모듈: Page 1.1.0, Board 1.1.0, Ecommerce 1.2.0 이상
- 현재 버전: 0.3.0-beta.3 · Open Source Beta
- 게시판 캐시 범위: 목록 1~3페이지, 페이지당 최대 50개
- 현재 제외 범위: 전체 HTML 페이지, 게시글 상세, 상품 상세, 검색 결과, 장바구니, 주문
직접 SQL 수정이나 외부 데이터 가져오기처럼 공식 변경 감지를 우회하는 작업 후에는 별도 캐시 무효화가 필요합니다.
빠른 반복 조회와 효율적인 서버 운영을 위한 그누보드 7 캐시 플러그인, JW PowerCache입니다.
다른 창작물 살펴보기
G7 통합 소셜 로그인 플러그인 - Glitter Social Login
네이버·카카오·구글·페이스북·GitHub 로그인과 회원가입, 기존 회원 연동 및 소셜 계정 관리를 지원하는 Gnuboard7 소셜 로그인 플러그인.
G7 게시글 번역 관리 플러그인 - Glitter Translate
GnuBoard7 게시글의 제목과 본문 번역을 언어별로 관리하고, 현재 언어와 게시글 권한에 맞게 제공하는 플러그인.