친절한 우리 고모

친절한 고모의 친절한 이야기

  • 2025. 5. 21.

    by. 친절한 고모

    목차

      캐시 시스템의 핵심 개념

      워드프레스는 기본적으로 동적 콘텐츠를 매 요청마다 PHP + DB로 생성한다.
      이로 인해 트래픽이 많을수록 서버 부하와 페이지 로딩 시간이 증가한다.
      이를 해결하는 방식이 바로 캐시(Caching) 이다.

      캐시의 3대 계층

      구분설명예시
      페이지 캐시 HTML 전체를 저장 WP Super Cache, LiteSpeed
      객체 캐시 DB 쿼리 결과, 옵션 값 등 Redis, Memcached
      브라우저 캐시 정적 파일을 클라이언트에 저장 CSS, JS, 이미지 등
       

      1. 페이지 캐시 구성

      역할

      • 방문자가 요청한 페이지를 정적인 HTML로 저장
      • PHP와 DB를 다시 거치지 않기 때문에 빠른 응답 제공

      추천 플러그인

      플러그인특징
      WP Super Cache 가장 널리 사용되는 무료 플러그인
      LiteSpeed Cache 서버 연동 캐시 + 이미지 최적화 기능 포함
      WP Rocket 사용자 인터페이스 우수 + 정적 자산 최적화
       

      설정 팁

      • 로그인 사용자, 장바구니 페이지, 마이페이지 등은 제외
      • 모바일/PC 버전 분리 캐시 설정
      • Cache Preload 기능 활용해 모든 페이지 미리 캐싱 가능

      2. 객체 캐시 구성

      역할

      • DB 쿼리 결과, 옵션 값, 트랜지언트 등을 메모리에 저장
      • 동일 요청 시 DB 접근 생략

      사용 방식

      • Redis 또는 Memcached 서버 설치
      • wp-config.php 설정
      php
      복사편집
      define('WP_CACHE_KEY_SALT', 'example.com:'); define('WP_REDIS_CLIENT', 'phpredis');

      추천 플러그인

      • Redis Object Cache
      • W3 Total Cache (객체 캐시 기능 포함)

      주의 사항

      • 객체 캐시는 동적 요청에만 유효
      • 트랜지언트와 충돌 시 주기적 정리 필요

      3. 브라우저 캐시 구성

      역할

      • 정적 파일(CSS, JS, 이미지 등)을 클라이언트 단에서 캐싱
      • 재방문 시 서버 요청 없이 빠르게 로딩

      .htaccess 설정 예 (Apache 기준)

      apache
      복사편집
      <IfModule mod_expires.c> ExpiresActive On ExpiresByType image/jpeg "access plus 1 year" ExpiresByType text/css "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" </IfModule>

      NGINX 설정 예

      nginx
      복사편집
      location ~* \.(js|css|png|jpg|jpeg|gif|ico|webp)$ { expires 30d; access_log off; }

      고급 캐시 조합 전략 예시

      페이지페이지 캐시객체 캐시브라우저 캐시
      홈, 글 보기 사용 사용 사용
      장바구니, 결제 제외 사용 사용
      관리자 화면 제외 사용 사용
       

      4. 캐시 무효화 전략

      • 콘텐츠 수정 → 캐시 자동 삭제 필요
      • WP Rocket, LiteSpeed Cache 등은 수정 시 자동 캐시 삭제 가능
      • 게시글 외 커스텀 작업 시 수동 삭제 코드 필요
      php
      복사편집
      wp_cache_flush();

      또는 특정 포스트만 삭제:

      php
      복사편집
      wp_cache_delete( 'post_' . $post_id, 'posts' );

      5. 캐시 모니터링과 디버깅

      Query Monitor 플러그인

      • 쿼리 수, 캐시 여부, 로딩 시간 등 확인 가능
      • 캐시된 항목과 캐시 미스 항목 구분 가능

      Object Cache Stats 플러그인

      • Redis hit/miss 확인 가능
      • 캐시 효율 분석

      캐시 구성 체크리스트

      항목완료 여부
      페이지 캐시 플러그인 설치 및 활성화 예 / 아니오
      로그인/장바구니 페이지 캐시 제외 처리 예 / 아니오
      Redis 또는 Memcached 설치 및 연동 예 / 아니오
      브라우저 캐시 설정 적용 (.htaccess/NGINX) 예 / 아니오
      캐시 무효화 로직 확인 또는 자동화 예 / 아니오
      캐시 효율 분석 툴 설치 예 / 아니오

      캐시 시스템의 핵심 개념