회원가입 | 고객센터 |
DESIGNONEX
디자인원엑스
DX마켓
PR리그
Q&AN
지식공유
공지사항
통계
로그인 회원가입
고객센터

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

D DX관리자
2026.08.06 01:58 6 0


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)이 안전한지 확인 — 이 플러그인은 게시판 핸들러 영향 없음

댓글0

로그인 후 댓글을 작성할 수 있습니다.
Plugin 29
41
전체 회원
1,491
전체 게시글
2,541
전체 댓글
5
오늘 방문
51,762
전체 방문
0
현재 접속
인기글 7일 이내
최신글
최신댓글
내 플레이리스트
플레이리스트가 비어있습니다
스튜디오 게시판에서
플레이리스트에 담기 버튼을
눌러보세요
목록
목록