자주자주 공지를 확인하세요!

라이믹스/매뉴얼/캐시와 성능 점검

Gaon12 (토론 / 기여)님의 2026년 10월 16일 (금) 23:41 판 (실무 보충: 캐시 계층 구분, OPcache 배포 반영, 개인정보와 성능 진단)
(차이) ← 이전 판 / 최신판 (차이) / 다음 판 → (차이)

상위 문서: 라이믹스/매뉴얼

캐시를 구분해야 하는 이유

코드를 고쳤는데 화면이 그대로이거나 캐시를 재생성해도 PHP 코드가 바뀌지 않는다면, 어떤 계층에 예전 결과가 남아 있는지 구분한다. 라이믹스 관리자 화면의 캐시 재생성이 브라우저·CDN·PHP의 모든 캐시까지 지운다고 가정하면 진단이 어려워진다.

계층 저장하는 것 확인 예시
브라우저 HTTP 캐시 CSS·JS·이미지·HTTP 응답 개발자 도구에서 캐시 사용 여부와 실제 응답 본문 확인
CDN·리버스 프록시 중간 서버가 보관하는 정적 파일 또는 페이지 응답 응답 헤더의 Age·캐시 판정, 공급자 설정과 퍼지 범위 확인
라이믹스·확장 기능 컴파일된 템플릿·설정·계산 결과 등 관련 기능의 캐시 재생성, 자체 캐시 키·만료·무효화 확인
PHP OPcache PHP 스크립트의 컴파일된 바이트코드 웹 PHP의 OPcache 설정과 배포 후 무효화 절차 확인

각 계층을 순서대로 확인하는 실무 안내이며, 모든 사이트가 CDN이나 별도 캐시 서버를 사용하는 것은 아니다.

수정 사항이 보이지 않을 때

  1. 브라우저에서 실제로 내려받은 파일 URL과 응답 본문을 본다. 편집한 파일과 서비스 중인 스킨·레이아웃 경로가 같은지 확인한다.
  2. 개발자 도구의 캐시 비활성화 상태에서 재현하여 브라우저 캐시 영향을 구분한다. 브라우저 강력 새로고침만으로 서버의 캐시가 모두 초기화되지는 않는다.
  3. CDN을 쓴다면 대상 URL의 캐시 상태와 퍼지 여부를 확인한다. CSS·JS의 내용이 달라졌을 때 파일명 또는 적절한 버전 식별자를 바꾸는 배포 방식도 검토한다.
  4. 템플릿·모듈 설정 변경이라면 라이믹스의 관련 캐시를 재생성한다. 원본 files 디렉터리 전체를 삭제하지 않는다.
  5. PHP 파일 교체라면 OPcache를 확인한다. 여러 서버를 운영하면 모든 노드에 동일한 코드와 설정이 적용됐는지도 확인한다.

OPcache 주의점

opcache.validate_timestamps=0이면 PHP가 파일 변경 시각을 통한 자동 갱신을 하지 않는다. 파일만 교체해도 이전 코드가 계속 실행될 수 있으므로 배포 절차에 웹 PHP의 OPcache 무효화 또는 해당 PHP 실행 서비스의 재시작 절차가 필요하다. 시간 검사 사용 시에는 opcache.revalidate_freq도 영향을 준다. CLI와 웹 PHP는 별도 환경일 수 있어 터미널에서 실행한 초기화가 웹 서비스에 적용됐다고 단정하지 않는다. PHP OPcache 공식 설정

페이지 캐시와 개인정보

로그인 사용자 이름·쪽지·관리 기능·비공개 글이 포함된 응답을 공개 공유 캐시에 저장하면 다른 사용자에게 노출될 수 있다. CDN이나 프록시에서 모든 HTML을 강제로 캐시하기 전에 로그인·세션·권한에 따른 우회 정책을 설계한다. 쿠키가 있다는 사실만으로 응답이 자동으로 비공개가 되지는 않는다.

HTTP의 no-cache는 저장 금지가 아니라 재사용 전 검증을 요구한다. no-store는 저장하지 않도록 하고, private는 공유 캐시에 저장하지 않도록 한다. 실제 CDN이 자체 규칙으로 헤더를 덮어쓰는지도 확인한다. MDN HTTP 캐시 안내

느릴 때 측정할 것

관찰 다음 확인
첫 HTML 응답이 느림 서버 응답 대기 시간, PHP 처리·DB 쿼리·외부 HTTP/메일 요청, 워커 대기
HTML은 빠르지만 화면 완성이 느림 큰 이미지·폰트·JS, 요청 수, 자바스크립트 실행 시간
특정 게시판·위젯만 느림 해당 확장 기능의 조회 수, 반복문 안의 추가 쿼리, 외부 서비스 호출
동시 접속 때만 느림 PHP-FPM 워커·메모리·DB 연결·디스크 I/O 등 자원 사용량과 대기

한 번의 로딩 시간으로 결론 내리지 말고 같은 URL·계정·데이터·캐시 상태에서 여러 번 비교한다. 서버 응답 대기 시간에는 네트워크와 프록시 영향도 들어가므로 그 값 전부를 DB 실행 시간으로 해석하지 않는다.

확장 기능의 캐시 설계

라이믹스의 Rhymix\Framework\Cache는 캐시 저장·조회 API를 제공한다. 사용 예시는 라이믹스/매뉴얼/라이믹스 프레임워크와 공식 Cache 명세를 참고한다.

  • 키에는 자료 식별자와 출력에 영향을 주는 언어·페이지·권한 범위를 포함한다. 서로 다른 회원의 결과가 섞이지 않도록 한다.
  • 변경·삭제 후 어떤 키를 무효화할지 정한다. TTL만 정하고 갱신 절차를 빠뜨리면 오래된 결과가 남는다.
  • 캐시가 없거나 저장소에 장애가 생긴 경우 원본에서 계산하는 경로도 확인한다. 캐시에만 원본 데이터를 보관하지 않는다.
  • 모든 요청에서 전체 캐시를 지우는 식의 구현은 피한다. 필요 범위를 좁혀 지우고 재생성 직후 부하도 측정한다.

같이 보기

최근 바뀜

더 보기