상위 문서: 라이믹스/매뉴얼
캐시를 구분해야 하는 이유[편집 / 원본 편집]
코드를 고쳤는데 화면이 그대로이거나 캐시를 재생성해도 PHP 코드가 바뀌지 않는다면, 어떤 계층에 예전 결과가 남아 있는지 구분한다. 라이믹스 관리자 화면의 캐시 재생성이 브라우저·CDN·PHP의 모든 캐시까지 지운다고 가정하면 진단이 어려워진다.
| 계층 | 저장하는 것 | 확인 예시 |
|---|---|---|
| 브라우저 HTTP 캐시 | CSS·JS·이미지·HTTP 응답 | 개발자 도구에서 캐시 사용 여부와 실제 응답 본문 확인 |
| CDN·리버스 프록시 | 중간 서버가 보관하는 정적 파일 또는 페이지 응답 | 응답 헤더의 Age·캐시 판정, 공급자 설정과 퍼지 범위 확인 |
| 라이믹스·확장 기능 | 컴파일된 템플릿·설정·계산 결과 등 | 관련 기능의 캐시 재생성, 자체 캐시 키·만료·무효화 확인 |
| PHP OPcache | PHP 스크립트의 컴파일된 바이트코드 | 웹 PHP의 OPcache 설정과 배포 후 무효화 절차 확인 |
각 계층을 순서대로 확인하는 실무 안내이며, 모든 사이트가 CDN이나 별도 캐시 서버를 사용하는 것은 아니다.
수정 사항이 보이지 않을 때[편집 / 원본 편집]
- 브라우저에서 실제로 내려받은 파일 URL과 응답 본문을 본다. 편집한 파일과 서비스 중인 스킨·레이아웃 경로가 같은지 확인한다.
- 개발자 도구의 캐시 비활성화 상태에서 재현하여 브라우저 캐시 영향을 구분한다. 브라우저 강력 새로고침만으로 서버의 캐시가 모두 초기화되지는 않는다.
- CDN을 쓴다면 대상 URL의 캐시 상태와 퍼지 여부를 확인한다. CSS·JS의 내용이 달라졌을 때 파일명 또는 적절한 버전 식별자를 바꾸는 배포 방식도 검토한다.
- 템플릿·모듈 설정 변경이라면 라이믹스의 관련 캐시를 재생성한다. 원본
files디렉터리 전체를 삭제하지 않는다. - 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만 정하고 갱신 절차를 빠뜨리면 오래된 결과가 남는다.
- 캐시가 없거나 저장소에 장애가 생긴 경우 원본에서 계산하는 경로도 확인한다. 캐시에만 원본 데이터를 보관하지 않는다.
- 모든 요청에서 전체 캐시를 지우는 식의 구현은 피한다. 필요 범위를 좁혀 지우고 재생성 직후 부하도 측정한다.
같이 보기[편집 / 원본 편집]
| 라이믹스 · 설치·운영·개발 매뉴얼 둘러보기 | |
|---|---|
| 설치·이전 | 설치 환경 · 설치 · 업데이트 · XE에서 이전 · 호환성 점검 · nginx · 도메인 변경 |
| 운영 | 백업·복원 · 업로드·서버 진단 · 캐시·성능 · Crontab · 보안 · 릴리즈 노트 |
| 개발 | 확장 기능 제작 · 애드온 · DB 연산자 · 라우터 · 이벤트 · 개발 보안 |
| 테마·API | 테마 제작 · 템플릿 v1 · 템플릿 v2 · 프레임워크 · PHP 전역 함수 · JS 라이브러리 · JS 함수 · 레거시 JS 함수 · String 확장 |
| 기여·연동 | 이슈·PR · 코딩 규칙 · 라이선스 · IP 대역 · 시간대 · 포토스와이프 · 모바일 푸시 · 네모의 꿈 색상 |