회원가입 | 고객센터 |
DESIGNONEX
DesignOneX CMS
로그인 회원가입
고객센터

캐시 상태 모니터링 유틸리티 플러그인

D DX관리자
2026.08.06 01:58(수정됨) 41 0 6


1. 플러그인 개요

항목 내용
플러그인 ID dx-cache-monitor
플러그인명 DX Cache Monitor (캐시 상태 모니터)
버전 1.0.3
제작사 DesignOneX
PHP 호환 PHP 5.6 이상
대상 관리자 전용 (비관리자에게는 표시 안 됨)

DX Cache Monitor는 DXCMS 관리자가 모든 페이지에서 현재 캐시 드라이버 상태와 캐시 키 HIT/MISS 현황을 실시간으로 확인할 수 있는 사이드 패널 모니터링 플러그인입니다. Redis, APCu, 파일 캐시 중 어떤 드라이버가 활성화되어 있는지, 주요 캐시 키가 정상적으로 적중하고 있는지를 직관적으로 파악할 수 있습니다.

2. 주요 기능

우측 중간 탭 버튼 — 클릭하면 360px 사이드 패널이 슬라이드로 열림
localStorage 상태 저장 — 패널 열림/닫힘 상태가 페이지 이동 후에도 유지
현재 요청 통계 — 캐시 히트 수, 미스 수, 피크 메모리(MB), 실행시간(ms)
드라이버 상태 — Redis, APCu, 파일 캐시 각각의 활성/대기/불가 상태 표시
드라이버 상세 정보 — 버전, 메모리 사용량, 캐시 키 수 표시
캐시 키 HIT/MISS — 주요 캐시 키 및 파일캐시 자동 감지 키 조회
현재 페이지 정보 — URI, 라우트 타입, 게시판 키 표시
캐시 전체 삭제 버튼 — 클릭 즉시 DxCache::flush() 실행
새로고침 버튼 — 최신 상태 재측정
관리자 전용 — 비관리자에게는 탭과 패널이 전혀 표시되지 않음

3. 설치 방법

3.1 파일 업로드

1. 다운로드한 dx-cache-monitor.zip 파일을 압축 해제합니다.
2. 아래 경로에 폴더를 업로드합니다.
 
업로드 경로 내용
plugins/dx-cache-monitor/ 플러그인 본체 (plugin.php, manifest.php, core/)
 

3.2 플러그인 활성화

1. DXCMS 관리자 → 플러그인 메뉴로 이동합니다.
2. DX Cache Monitor 플러그인을 찾아 [활성화] 버튼을 클릭합니다.
3. 활성화 후 모든 페이지 우측 중간에 캐시 드라이버 이름이 표시된 탭이 나타납니다.
 
ℹ️  extend/top/ 폴더나 별도 라우터 파일이 필요 없습니다. plugin.php 하나로 동작합니다.
 

3.3 활성화 확인

관리자로 로그인한 상태에서 페이지 우측 중간에 아래와 같은 탭이 보이면 정상입니다.
 
탭 색상 의미
빨간색 Redis 드라이버 활성
주황색 APCu 드라이버 활성
파란색 파일 캐시 드라이버 활성
회색 캐시 없음 (none)

4. 화면 구성

4.1 탭 버튼

페이지 우측 중간에 고정 표시됩니다. 현재 활성 드라이버 이름(Redis/APCu/파일/없음)이 세로로 표시되며 클릭하면 사이드 패널이 열립니다. 패널이 열리면 탭이 자동으로 360px 왼쪽으로 이동합니다.
 

4.2 사이드 패널 구성

섹션 내용
📊 현재 요청 통계 캐시 히트 수 / 캐시 미스 수 / 피크 메모리(MB) / 실행시간(ms)
🔌 캐시 드라이버 Redis · APCu · 파일 각각의 상태, 버전, 메모리, 키 수
🗝 캐시 키 상태 주요 키 및 자동 감지 키의 HIT/MISS 표시
📄 현재 페이지 요청 URI, 라우트 타입, 게시판 키
측정 시각 데이터 수집 시각 (HH:MM:SS)
🗑 캐시 전체 삭제 모든 캐시 즉시 삭제 후 자동 새로고침
새로고침 현재 페이지 새로고침으로 최신 상태 재측정

5. 캐시 드라이버 상태 안내

5.1 드라이버 우선순위

DXCMS는 아래 우선순위로 캐시 드라이버를 자동 선택합니다.
 
우선순위 드라이버 / 조건
1순위 Redis — REDIS_SESSION_URL 상수 정의 + Redis PHP 익스텐션 + 연결 성공
2순위 APCu — APCu PHP 익스텐션 설치 + apc.enabled=On
3순위 파일 캐시 — data/cache/ 폴더 쓰기 가능
4순위 없음(none) — 위 모두 실패 시
 

5.2 드라이버 뱃지 의미

뱃지 의미
활성 (녹색) 현재 이 드라이버가 캐시로 사용 중
대기 (회색) 사용 가능하지만 우선순위에 밀려 대기 중
불가 (빨간색) 익스텐션 없음, 연결 실패, 폴더 없음 등으로 사용 불가
 

5.3 드라이버별 추가 정보

드라이버 표시 정보
Redis Redis 버전, 메모리 사용량, 이 사이트 캐시 키 수
APCu 히트 수, 미스 수, 메모리 사용량, 이 사이트 캐시 키 수
파일 캐시 파일 수, 전체 파일 용량(KB), 캐시 디렉토리 경로

6. 캐시 키 HIT / MISS 안내

6.1 HIT과 MISS의 의미

상태 의미
HIT (녹색) 캐시에 해당 키가 존재 → DB 조회 없이 캐시에서 즉시 반환
MISS (빨간색) 캐시에 해당 키 없음 → DB에서 직접 조회 필요
 

6.2 MISS가 발생하는 정상적인 경우

첫 번째 접속 — 캐시가 아직 생성되지 않은 콜드 상태 (두 번째 접속부터 HIT)
TTL 만료 — 캐시 유효시간이 지나 자동 삭제된 경우
게시글 작성/수정/삭제 — 최신 데이터 반영을 위해 관련 캐시 무효화
캐시 전체 삭제 후 — 삭제 직후 첫 요청은 MISS
파일캐시 키 이름 불일치 — 모니터가 체크하는 키와 실제 저장 키가 다른 경우
 

6.3 자동 감지 캐시 키

파일 캐시 드라이버 사용 시 data/cache/ 폴더를 자동 스캔하여 실제 존재하는 캐시 파일 최대 5개를 추가로 표시합니다. 파일명에서 사이트 네임스페이스(해시 8자리)를 제거한 실제 키로 조회하므로 정확한 HIT 여부를 확인할 수 있습니다.
 
ℹ️  예: e83dea91_board_list_free_p1.cache → board_list_free_p1 키로 조회
 

6.4 체크하는 주요 캐시 키

캐시 키 내용
dx_site_config 사이트 기본 설정
dx_boards_all 전체 게시판 목록
dx_menus 메뉴 구조
dx_theme_config 테마 설정
dx_popups 팝업 목록
dx_global_notices 전체 공지
dxstat_download_widget 다운로드 통계 위젯
board_list_{board_key}_p1 게시판 목록 1페이지 (현재 게시판)
board_info_{board_key} 게시판 정보 (현재 게시판)
board_cats_{board_key} 게시판 카테고리 (현재 게시판)

7. 캐시 전체 삭제

패널 하단의 [🗑 캐시 전체 삭제] 버튼을 클릭하면 확인 팝업 후 DxCache::flush()가 실행됩니다.
 
드라이버 삭제 방식
Redis SCAN으로 이 사이트 네임스페이스 키만 선택 삭제 (다른 앱 캐시 보존)
APCu 이 사이트 네임스페이스로 시작하는 키만 선택 삭제
파일 data/cache/*.cache 파일 전체 삭제
 
⚠️  삭제 후 다음 요청 시 DB에서 자동으로 캐시가 재생성됩니다. 첫 요청은 느릴 수 있습니다.

8. 패널 열림 상태 유지

패널의 열림/닫힘 상태는 브라우저 localStorage에 저장됩니다. 키: dxcm_panel_open (값: 1=열림, 0=닫힘)

페이지를 이동해도 마지막 상태가 유지됩니다
새 탭에서도 같은 상태로 열립니다
브라우저 캐시/데이터 삭제 시 초기화됩니다 (기본: 닫힘)
 
ℹ️  localStorage를 지원하지 않는 구형 브라우저에서는 항상 닫힌 상태로 시작합니다.

9. 파일 구조

파일/폴더 설명
plugin.php 플러그인 진입점 — 훅 등록, 활성화 체크, 패널 출력
manifest.php 플러그인 메타 정보 (ID, 버전, 설명)
core/helper.php 캐시 드라이버 상태 수집, 캐시 키 HIT/MISS 조회 함수

10. 동작 구조

플러그인은 DXCMS의 dx_bottom 훅(우선순위 999)에서 동작합니다.
 
단계 동작
1. 관리자 여부 확인 Auth::getInstance()->isAdmin() — 비관리자면 즉시 반환
2. 드라이버 상태 수집 Redis 연결 시도, APCu 정보, 파일 캐시 파일 수 집계
3. 캐시 키 조회 주요 키 + 파일캐시 자동 감지 키 HIT/MISS 확인
4. 패널 HTML 출력 페이지 최하단에 CSS + HTML + JavaScript 삽입
5. localStorage 복원 JS에서 저장된 열림 상태를 읽어 패널 표시
 
⚠️  dx_bottom 훅은 페이지 렌더링이 완전히 끝난 후 실행되므로 게시판 등 모든 페이지에서 안전하게 동작합니다.

11. 활성화 체크 방식

플러그인은 시작 시 plugins 테이블을 직접 조회하여 status=1인 경우에만 동작합니다.
 
상태 동작
활성화 (status=1) 드라이버 상태 수집 및 패널 표시
비활성화 (status=0) 즉시 return — 훅 등록 자체를 건너뜀
미등록 (테이블에 없음) 즉시 return — 동작 안 함

12. 트러블슈팅

증상 해결 방법
탭이 보이지 않음 관리자로 로그인했는지 확인 / 플러그인 활성화 여부 확인
모두 MISS로 표시됨 정상 (첫 접속 후 새로고침 시 HIT으로 바뀜)
파일캐시인데 키가 안 보임 data/cache/ 폴더 파일이 있는지 확인
캐시 삭제 버튼 오류 CSRF 토큰 만료 — 페이지 새로고침 후 재시도
Redis ✕ 불가로 표시 REDIS_SESSION_URL 상수 설정 또는 PHP Redis 익스텐션 설치 필요
APCu ✕ 불가로 표시 php.ini에서 apc.enabled=1 설정 또는 APCu 익스텐션 설치 필요
게시판 페이지에서 오류 dx_bottom 훅(999)이 안전한지 확인 — 이 플러그인은 게시판 핸들러 영향 없음

댓글6

안졸리니졸리 2026.08.06 11:06
캐싱 동작여부를 확실히 확인할수 있어서 좋습니다 ^^
감사합니다
D
DX관리자 2026.08.06 14:10
^^ 다행이네요.
사실 다 궁금할것 같아서 한번은 만들어야지 했던것이였습니다.
서버 환경이시면, 문제점 피드백 부탁드리겠습니다.
안졸리니졸리 2026.08.06 22:40
피드백 드립니다
apcu 드라이버는 설치되었다고 나오는데 하루 계속 살펴봤는데 모두 Miss 표시밖에 없네요
데모는 file인데 Hit 도 멏개 있더라구요
저의 apcu 를 끄고 다시 테스트 해봐야할듯합니다
수고 많으셨습니다
감사합니다
^____^
D
DX관리자 2026.08.07 02:48
감사합니다.
늦은 답변 드려서 죄송합니다.
집안에 일이 있어서 이제야 컴퓨터 앞에 앉네요.
 

APCu가 설치됨으로 표시되는데 항상 MISS인 것은 버그가 아니라 환경 특성입니다.

카페24 같은 공유호스팅이나 아파치 멀티 워커 환경에서는 APCu가 설치되어 있어도
워커마다 메모리가 분리되어 있어서 캐시를 저장한 워커와 조회하는 워커가 다르면 항상 MISS가 나옵니다.
 

파일 캐시에서 HIT이 나오는 건 맞습니다.
파일은 디스크에 저장되므로 어떤 워커에서 조회해도 같은 파일을 읽어서 안정적으로 HIT가 됩니다.

안졸리니졸리 2026.08.07 11:02
너무 늦은 시간 아닌가요?
부디 쉬시면서 하셨으면 좋겠습니다
뭐 대단한 질문이라고 이렇게 늦게... 제가 죄송할 따름입니다  ㅠ.ㅠ
그러면 APCu가 설치됨으로 표시되어있으면 환경 특성일뿐 MISS, HIT 표시와는 상관없이 잘 작동하고 있다는거죠?
 
D
DX관리자 2026.08.07 14:24
네 맞습니다 ^^
로그인 후 댓글을 작성할 수 있습니다.
Plugin 53
45
전체 회원
1,391
전체 게시글
2,748
전체 댓글
80
오늘 방문
53,598
전체 방문
1
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록
목록