클라우드플레어 캐시 설정 변경과 퍼지 기능으로 웹사이트 속도 올리는 방법

웹사이트의 이미지를 수정하거나 CSS 스타일시트 파일을 변경했는데도 화면에 곧바로 반영되지 않는다면 클라우드플레어(Cloudflare)의 에지 서버가 기존 데이터를 그대로 보관하고 있기 때문입니다. 이 문제를 즉시 해결하려면 클라우드플레어 대시보드에 로그인한 뒤 Caching(캐싱) 메뉴로 이동하여 Configuration(구성) 탭의 Purge Everything(모두 퍼지) 버튼을 클릭하면 됩니다. 약 10초에서 30초 이내에 에지 캐시가 강제로 초기화되며 전 세계 방문자에게 새로 수정된 화면이 노출되기 시작합니다.

클라우드플레어는 원본 서버의 이미지, 자바스크립트, CSS 파일 등을 전 세계 에지 서버에 복사해 두고 방문자와 가장 가까운 위치에서 이를 대신 전달하는 CDN(콘텐츠 전송 네트워크) 서비스입니다. 매번 웹 호스팅 서버로 직접 요청이 들어오지 않으므로 서버 트래픽 비용이 절감되고 페이지 로딩 속도가 빨라집니다. 하지만 파일 변경 주기에 맞춰 캐시 수명(TTL)을 세밀하게 제어하지 않으면 사용자가 오래된 콘텐츠를 보게 되거나, 반대로 원본 서버에 불필요한 요청이 누적되어 사이트가 느려질 수 있습니다.

클라우드플레어 기본 캐시 동작 방식 확인하기

클라우드플레어는 기본적으로 이미지(.png, .jpg, .gif), 스타일시트(.css), 스크립트(.js) 같은 정적 자산만 알아서 캐싱합니다. 동적 콘텐츠인 HTML 문서나 데이터베이스 쿼리 결과는 기본 규칙에서 캐싱 대상이 아닙니다. 이 작동 원리를 모르면 웹 페이지의 텍스트 글을 수정했음에도 왜 캐시 서버에 저장되지 않는지 원인을 찾기 어렵습니다. HTML 파일 자체를 캐싱 범위에 넣으려면 별도의 규칙 설정을 추가해야 합니다.

이 기본 캐싱 서비스는 네임서버를 클라우드플레어로 연결하고 주황색 구름(Proxy) 아이콘을 활성화하는 순간부터 즉시 작동합니다. 사용자가 웹사이트에 접속하면 클라우드플레어 서버는 자기가 보관한 복사본 파일이 있는지 검사합니다. 파일이 보관되어 있으면 원본 서버까지 트래픽을 보내지 않고 직접 응답합니다. 이를 캐시 히트(Cache Hit)라고 부르며, 복사본이 없어 원본 서버에서 새 파일이 넘어오는 상황을 캐시 미스(Cache Miss)라고 합니다.

특정 페이지와 전체 사이트 캐시를 구분해서 삭제하기

수정한 파일이 웹사이트 디자인 전체에 영향을 주는 메인 CSS 파일이라면 전체 캐시를 비워야 합니다. 하지만 특정 게시글에 첨부된 이미지 하나만 바뀐 상황이라면 해당 URL의 캐시만 핀포인트로 지우는 것이 대역폭 보호 측면에서 훨씬 유리합니다. 대시보드 도메인 홈 화면에서 왼쪽 사이드바의 Caching 메뉴를 누르고 하위 항목인 Configuration으로 들어갑니다. 화면 최상단에 Purge Cache 도구가 표시됩니다.

전체 캐시를 완전히 비우려면 오른쪽에 있는 Purge Everything 파란색 버튼을 누르면 됩니다. 버튼을 누르면 사이트 속도가 일시적으로 느려질 수 있다는 경고 메시지가 나타나며, 승인 시 모든 에지 서버의 캐시 데이터가 즉시 파기됩니다. 이 작업은 동시 접속자가 가장 적은 시간대에 실행하는 것이 안전합니다. 특정 파일만 골라서 지우고 싶을 때는 왼쪽의 Custom Purge 버튼을 사용합니다. 입력창에 https://yourdomain.com/images/banner.jpg와 같이 정확한 파일 경로를 주소창 형식으로 기입하고 아래 Purge 버튼을 누르면 해당 파일만 깔끔하게 초기화됩니다. 여러 개의 URL을 동시에 비우려면 한 줄에 하나씩 주소를 적어 주면 됩니다.

효율적인 대역폭 관리를 위한 캐시 수준과 만료 시간 설정

Caching > Configuration 메뉴에서 아래로 화면을 내리면 Caching Level(캐시 수준) 항목을 볼 수 있습니다. 여기서는 세 가지 캐시 매칭 방식을 제공합니다. 기본값은 Standard(표준)입니다. 표준 설정은 쿼리 문자열이 다르면 서로 다른 파일로 인식하여 독립된 캐시를 생성합니다. 예를 들어 style.css?ver=1.1style.css?ver=1.2를 별개의 개체로 처리합니다. 버전을 올려 캐시를 강제 갱신하는 개발 방식에 최적화된 옵션입니다. 반면 Ignore Query String(쿼리 문자열 무시)은 물음표 뒤의 인자값과 상관없이 오직 원래 파일명 하나로만 캐싱을 고정하므로 캐시 효율이 가장 높습니다.

바로 아래 위치한 Browser Cache TTL(브라우저 캐시 TTL) 옵션은 방문자의 개인 컴퓨터 웹 브라우저가 정적 파일을 보관하는 기한을 통제합니다. 클라우드플레어 에지 서버가 아닌 방문자 단말기 안에서의 보관 주기입니다. 기본값은 4 hours(4시간)로 설정되어 있습니다. 텍스트나 디자인 요소가 고정되어 거의 변경되지 않는 웹사이트라면 이 값을 8일 또는 1달로 길게 변경하여 첫 방문 이후의 페이지 로딩 속도를 대폭 끌어올릴 수 있습니다. 수정이 빈번한 쇼핑몰이나 커뮤니티라면 30 minutes(30분)나 1 hour(1시간)로 짧게 설정하는 편이 화면 어긋남 문제를 예방하는 좋은 선택이 됩니다.

특정 URL 패턴에만 캐싱을 다르게 적용하는 캐시 규칙

웹사이트 안에는 페이지 성격에 따라 캐싱 정책이 완전히 달라져야 하는 구역들이 존재합니다. 로그인을 진행하는 세션 페이지나 관리자 제어판 영역(/admin/)은 타인의 개인정보가 캐싱되어 노출될 위험이 있으므로 절대 에지 서버에 저장하면 안 됩니다. 반대로 폰트 파일이나 고해상도 배경 이미지가 담긴 /assets/ 폴더는 영구적으로 캐싱을 적용하고 싶을 것입니다. 이 같은 조건별 제어는 Rules(규칙) 메뉴 산하의 Cache Rules(캐시 규칙) 설정 페이지에서 제어할 수 있습니다. 무료 플랜 가입자도 최대 10개까지 정밀 규칙을 설계할 수 있습니다.

사이드바 메뉴에서 Rules > Cache Rules를 차례대로 선택한 뒤 화면 우측의 Create rule(규칙 생성) 단추를 누릅니다. 규칙 이름 입력란에 작업 목적에 맞게 Admin Bypass라고 명명합니다. 하단의 조건부 영역에서 필드(Field)값을 URI Path로 바꾸고, 연산자(Operator)를 starts with(시작함)로 맞춘 뒤 값(Value) 입력란에 /admin을 기재합니다. 스크롤을 내려 캐시 적격성 항목의 선택 단추를 Bypass cache(캐시 우회)로 체크하고 저장 버튼을 누릅니다. 설정이 완료되면 관리자 화면 내에서의 글쓰기나 플러그인 설정 변경 작업이 캐싱 방해 없이 실시간으로 서버에 도달하게 됩니다.

작업 중 화면 오류를 방지하는 개발 모드 활용법

웹사이트의 소스코드를 실시간으로 빌드하고 수정하는 배포 단계에서는 매번 수동으로 캐시를 퍼지하는 과정 자체가 비효율적인 수작업이 됩니다. 코드 한 줄을 바꾸고 새로고침을 할 때마다 클라우드플레어 대시보드를 오가야 하기 때문입니다. 이럴 때는 사이트의 프록시 캐싱 동작을 일시적으로 완전히 정지시키는 Development Mode(개발 모드)를 사용하면 편리합니다. 개발 모드가 작동하는 동안에는 모든 방문자의 요청이 클라우드플레어 에지 서버를 거치지 않고 직접 원본 웹 서버로 논스톱 연결됩니다.

개발 모드를 활성화하려면 도메인 대시보드의 첫 화면(Overview) 우측 빠른 작업 패널에서 Development Mode 토글 스위치를 마우스로 클릭하여 켜주면 됩니다. Caching > Configuration 메뉴의 가장 아래 영역에서도 동일하게 제어할 수 있습니다. 이 개발 모드는 한번 켜면 3시간 동안 유지되다가 시간이 만료되면 시스템 안전을 위해 자동으로 비활성화 상태로 복귀합니다. 개발자가 사이트 수정 작업을 완료한 후에 깜빡 잊고 캐시를 꺼두어 서버 트래픽 요금이 폭탄처럼 발생하는 사태를 방지하기 위한 이중 안전장치입니다. 수정이 끝났다면 수동으로 다시 토글을 꺼서 즉각 에지 캐싱 서비스를 정상 복원해 주는 것이 현명합니다.

개발자 도구의 응답 헤더로 캐싱 상태 디버깅하기

수정한 설정들이 웹상에서 실제로 구동하고 있는지 확인하는 가장 정석적인 방법은 브라우저 내장 디버거를 사용하는 것입니다. 크롬(Chrome)이나 엣지(Edge) 브라우저를 켜고 대상 웹페이지를 불러옵니다. 키보드의 F12 단축키를 입력해 개발자 도구 패널을 엽니다. 최상단 리스트에서 Network(네트워크) 탭을 찾아 클릭합니다. 이 상태에서 키보드의 Ctrl + F5 (맥OS 사용자는 Cmd + Shift + R) 키를 동시에 눌러 사이트를 강력히 새로고침합니다.

불러온 정적 자산 목록 중 분석 대상이 되는 이미지나 스타일시트 파일 명칭을 단일 선택합니다. 오른쪽에 나타나는 세부 내역 레이어에서 Headers(헤더) 항목의 Response Headers(응답 헤더) 꾸러미를 찾습니다. 이곳에서 가장 중점적으로 봐야 할 데이터 필드는 cf-cache-status입니다. 이 필드의 텍스트 정보에 따라 가공 상태를 판정합니다.

  • HIT: 클라우드플레어 캐시 메모리에 저장되어 있던 이미지나 파일을 즉각 반환하는 데 성공했다는 완벽한 상태 코드입니다.
  • MISS: 에지 캐시 내부에 해당 자산 파일이 부재하여 직접 원본 호스팅 서버로 이동해 긁어왔다는 의미입니다. 두 번째 로딩부터는 HIT로 변경되는 구조입니다.
  • DYNAMIC: 캐싱이 원천 금지된 동적 페이지 및 파일 포맷이라 판단하여 검사 없이 원본으로 우회 통과시켰을 때 반환되는 상태입니다.
  • BYPASS: 개발자가 정의한 페이지 규칙이나 개발 모드 옵션에 의하여 캐싱 알고리즘이 완전히 작동 정지된 경로라는 의미입니다.
  • EXPIRED: 기존 보관 기간이 만료되어 폐기 처분하기 직전 원본 서버에 새 교체 파일 유무를 다녀왔다는 응답 상태입니다.

캐시 삭제를 완료한 후에도 이전 화면이 노출될 때 해결책

클라우드플레어 단에서 Purge Everything 명령을 날렸고 네트워크 수신 데이터 헤더에서도 확실하게 MISS 사인이 떨어졌는데도 방문자 브라우저에 구버전 화면이 여전히 머물러 있다면, 이는 브라우저 고유의 로컬 보관 캐시가 원인일 가능성이 아주 높습니다. 로컬 브라우저는 네트워크 트래픽 자체를 절약하려 디스크 공간에 정적 파일들을 저장해 둡니다. 이 경우에는 사용 중인 브라우저 도구에서 캐시 초기화 명령을 따로 내리거나, 프라이빗 모드(시크릿 창)를 실행하여 재접속하면 쉽게 해결할 수 있습니다.

사용 중인 서버 시스템 자체의 캐시 메커니즘이 원인일 가능성도 따져보아야 합니다. 워드프레스(WordPress) 엔진을 사용하여 블로그를 운영 중이고 내부에 LiteSpeed CacheWP Super Cache 같은 가속 프로그램이 탑재되어 있다면, 이들 플러그인이 생성한 물리적 캐시 파일이 지워지지 않은 상태에서 클라우드플레어가 빈 껍데기만 퍼지하고 돌아갔을 수 있습니다. 이럴 때는 먼저 사이트 관리자 페이지 내부 캐시 청소 도구를 눌러 기존 HTML 원본 데이터베이스들을 비운 다음, 최종 단계로 클라우드플레어 퍼지 작업을 전개해야 올바른 순서대로 꼬임 현상 없이 동기화가 마감됩니다.

Leek
Leek

브라우저 캐시부터 서버·CDN 캐시까지, 웹사이트 속도를 느리게 만드는 원인을 직접 테스트해 보고 기록합니다. 캐시 오류 해결, 워드프레스 캐시 설정, 페이지 로드 속도 개선을 주로 다루며, 개념 설명에 그치지 않고 실제 화면과 수치를 확인한 내용을 쓰려고 합니다.

기사 : 13

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다