일반적인 CDN 문제와 해결 방법

CDN을 사용해도 웹 사이트가 여전히 느리다면, 이러한 일반적인 CDN 문제를 확인하세요.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 느린 CDN 성능 문제 해결
  • CDN 캐시에서 제공되는 오래된 콘텐츠 수정
  • 다른 일반적인 캐싱 문제 식별

글 링크 복사

일반적인 CDN 문제와 해결 방법

콘텐츠 전송 네트워크(CDN)는 최종 사용자에게 빠르게 전송할 수 있도록 웹 콘텐츠를 캐시하거나 복사본을 저장하는 분산된 서버 그룹입니다. CDN은 캐싱 외에도 동영상 스트리밍, 동적 콘텐츠, SSL 암호화 및 인증 지원 등 다양한 방식으로 콘텐츠 전송을 가속화하고 사용자 경험을 개선하는 데 도움이 될 수 있습니다.

모든 웹 사이트에서는 CDN의 이점을 누릴 수 있습니다. CDN은 최종 사용자와 원본 서버 사이에 위치합니다. CDN은 캐시에 있는 콘텐츠를 원본 서버에 전달하기 전에 사용자의 요청에 해당하는 콘텐츠로 요청을 채웁니다. 따라서 사용자에게는 웹 사이트가 더 빨리 로드됩니다. 식품점에서 음식을 사는 것이 매주 식품을 사려고 전국을 돌아다니며 여러 농장과 공장을 방문하는 것보다 훨씬 빠릅니다.

CDN 문제 해결: CDN 문제를 해결하는 방법

대부분의 경우 CDN에 가입하면 웹 사이트가 더 빠르게 개선되고, 웹 사이트 운영자가 대역폭 비용을 절감하며, 사이트 안정성을 개선하고, 특정 사이버 공격(예: DDoS 공격)에 대한 저항력을 높일 수 있습니다. 그러나 CDN 문제로 인해 웹 자산이 이러한 혜택을 보지 못할 때도 있습니다. 다음은 잠재적인 CDN 문제, 이를 유발할 수 있는 요인, 이를 해결하기 위한 권장 사항입니다.

CDN 성능 저하 문제

CDN을 사용할 때 여러 가지 문제로 인해 웹 사이트가 성능 이점을 얻지 못하거나 속도가 느려질 수 있습니다.

글로벌 도달 범위 부족: 사용되는 CDN에 따라 지역별로 성능이 일관되지 않을 수 있습니다. 네트워크의 모든 위치에 콘텐츠를 캐시하고 최종 사용자와 가까운 글로벌 위치를 제공하는 CDN을 사용해야 합니다.

원본 서버 문제: CDN이 원본 서버에서 콘텐츠를 가져올 수 없으면, 콘텐츠를 캐시하거나 제공할 수 없습니다. 이러한 상황은 원본 서버가 다운되거나 원본 서버와 CDN 간의 트래픽이 네트워크 병목 현상에 걸릴 때 발생할 수 있습니다.

원본 서버에서 동적 콘텐츠가 로드되지 않음: 동적 콘텐츠가 캐시될 수 없으므로 원본 서버에서 요청에 올바르게 응답하지 않으면 CDN 캐싱 동작과 관계없이 페이지가 느리게 로드되거나 로드되지 않을 수 있습니다. Cloudflare의 CDN과 같은 일부 CDN은 이 동적 콘텐츠의 전송을 가속화할 수 있는 추가 서비스와 통합되어 제공됩니다.

최적화되지 않은 파일: 매우 큰 콘텐츠 조각이나 특정 파일 유형은 CDN의 제한에 따라 캐시되지 않을 수 있습니다. 모든 콘텐츠가 신속한 전달과 우수한 사용자 경험을 위해 최적화되어 있는지 확인하세요. 많은 CDN에는 콘텐츠를 최적화, '최소화'(파일 크기 줄이기), 압축하는 기능이 있습니다.

렌더링 차단 리소스: 이 리소스는 페이지의 나머지 부분이 로딩되는 것을 막는 페이지 요소입니다. 예를 들어 캐스케이딩 스타일 시트(CSS) 파일은 렌더링 차단 리소스입니다. 페이지의 나머지 부분이 제대로 캐싱되고 있지만, CSS 파일이 캐싱되지 않는 경우, 다른 페이지 요소를 캐시에서 제공하기 전에 웹 서버에서 CSS 파일을 가져와야 합니다. 이로 인해 페이지 로드 시간이 느려질 수 있습니다. 렌더링 차단 리소스가 캐시되었는지 확인하거나, 페이지를 재구성하여 불필요한 리소스가 포함되지 않거나 마지막에 로드되도록 하세요.

타사 스크립트가 캐시되지 않음: 많은 웹 사이트가 다른 소스의 스크립트를 통합합니다. 이러한 소스는 동일한 CDN을 사용하지 않을 수 있습니다. 이러한 타사 스크립트는 원본 서버가 지리적으로 멀리 떨어져 있거나, 전송에 최적화되어 있지 않거나, 과부하가 걸려 있는 경우 로드하는 데 시간이 더 오래 걸릴 수 있습니다. 해당 스크립트가 렌더링을 차단하는 리소스라면, 전체 페이지의 로딩 속도가 느려질 수 있습니다. Chrome 개발자 도구를 사용하여 무엇이 느리게 로드되고 어디에서 오는지 평가하세요. 지속해서 페이지 속도를 저하시키는 스크립트를 교체하거나, 수천 개의 JavaScript 및 CSS 라이브러리를 제공하는 무료 콘텐츠 전송 네트워크인 CDNJS를 통해 호스팅되는 스크립트를 사용하는 것을 고려하세요.

CDN 캐시 적중률이 낮음: 캐싱에서 '캐시 누락'은 요청된 콘텐츠를 CDN에서 찾을 수 없어서 원본 서버에서 가져와야 한다는 것을 의미합니다. '캐시 히트'는 요청된 콘텐츠가 캐시에서 찾을 수 있어서 캐시에서 제공되었음을 의미합니다. 캐시 적중률에 따라 특정 웹 사이트에서 적중과 누락 간의 관계가 측정됩니다. 캐시 적중률이 낮다는 것은 웹 페이지의 대부분이 캐시에서 제공되지 않으며, 사용자의 브라우저가 대신 원본 서버에서 가져와야 한다는 것을 의미합니다. 각 캐시 누락 시 호스팅 제공자에 따라 웹 사이트에 송신 수수료가 발생할 수 있으며, 그에 따라 해당 웹 사이트의 운영 비용이 증가합니다.

낮은 캐시 적중률은 여러 가지 이유로 발생할 수 있습니다.

  • 캐시 규칙: 캐시 규칙에 따라 캐시되는 내용과 캐시 기간이 결정될 수 있습니다. 캐시 규칙이 올바르게 구성되지 않으면 적절한 콘텐츠가 캐시되지 않습니다. CDN 공급자는 특정 URL의 캐싱 문제를 해결할 수 있는 방법을 제공해야 합니다. (예를 들어 Cloudflare Trace 참조).
  • 캐싱 수준: 자산은 그 URL 유형에 따라 다르게 캐싱될 수 있습니다. 일부 CDN은 URL에 추가된 쿼리 문자열과 관계 없이 기본 URL로 동일한 콘텐츠를 캐시하거나, 각 쿼리 문자열에 대해 다른 콘텐츠를 캐시하거나, 쿼리 문자열과 관계 없이 캐시할 수 있습니다(예: "example.com/image.jpg?with=query"). 자산은 URL에 첨부된 쿼리 문자열에 따라 다르게 전달될 수 있으며, 이는 때로는 의도된 동작이 아닐 수 있습니다. 이 문제를 해결하려면 캐싱 수준 설정을 조정하세요.
  • 캐시 제어 헤더: 캐시 제어 헤더는 원본 서버의 HTTP 응답에 첨부됩니다. 이 헤더는 브라우저 및 CDN과 같은 중개자를 위한 캐싱 규칙을 설정합니다. 캐시 제어 헤더는 공급자에 따라 CDN에 설정된 캐싱 규칙과 충돌할 수 있으므로, 하나가 다른 것을 재정의하는 경우 둘 다 올바르게 설정되었는지 서로 비교해 봐야 합니다.

웹 사이트 성능과 관련하여 중요한 지표는 캐시 적중률만이 아닙니다. 웹 성능에 대한 전체적인 관점에는 핵심 웹 바이탈과 사용자 경험, SEO, AI 최적화에 영향을 미치는 기타 지표가 포함됩니다.

웹 사이트에 오래된 콘텐츠가 표시됨

콘텐츠가 빠르게 로드되지만, 잘못된 콘텐츠로, 최근 업데이트나 변경 사항이 반영되지 않는 경우, Time To Live(TTL)가 캐시된 콘텐츠에 대해 너무 높게 설정되었을 수 있습니다. Time To Live(TTL)는 콘텐츠가 CDN(또는 브라우저)에 의해 저장된 사본을 새로 고침하기 전에 얼마나 오래 캐시되어야 하는지를 초 단위로 측정하는 설정입니다. 충분히 빠르게 업데이트되지 않는 콘텐츠의 TTL을 낮추세요. 대안으로, CDN이 원본 서버에서 콘텐츠를 다시 가져오도록 캐시를 지워보세요.

자주 업데이트되는 콘텐츠는 특별한 캐싱 규칙이 필요할 수 있습니다. 어떤 경우에는 전혀 캐시되지 않아야 합니다. Cloudflare에는 웹 페이지의 콘텐츠를 캐시에서 즉시 제거할 수 있는 제거 기능이 있습니다.

DNS 구성

도메인과 해당 도메인의 모든 하위 도메인이 CDN을 가리키지 않으면, 해당 도메인과 연결된 콘텐츠는 CDN에 캐시되지 않으며, 웹 사이트는 성능상의 이점을 얻지 못합니다.

하위 도메인이 올바르게 설정되었는지 확인하세요. 하위 도메인(CNAME 레코드를 통해 구성됨)은 별도로 설정해야 합니다. 하위 도메인이 CDN 뒤에 있지 않으면, 기본 도메인이 CDN 뒤에 있더라도 해당 콘텐츠는 CDN에 캐시되지 않습니다.

CDN에서 발생하는 SSL 오류

CDN은 웹 사이트에 대한 SSL 인증서를 제공하는 경우가 많습니다. SSL 인증서는 사용자의 웹 사이트 연결을 인증하고, 사용자가 입력한 중요한 데이터를 암호화하며, 브라우저에서 보안 경고를 방지하는 데 도움을 줍니다. 하지만 때로는 웹 사이트에서 "혼합" 콘텐츠를 제공하는 경우가 있습니다. 그러한 경우 웹 페이지의 일부 콘텐츠는 SSL 연결을 통해 제공되고 일부는 그렇지 않습니다. 사용자가 페이지의 보안에 대한 브라우저 경고를 받게 되거나, 페이지가 로드되지 않거나, 페이지가 더 느리게 로드될 수 있습니다(브라우저가 TLS 핸드셰이크를 시작하려고 하지만 실패하여).

이러한 오류는 웹 페이지에 외부 소스 또는 SSL 인증서에 나열되지 않은 하위 도메인의 콘텐츠가 포함된 경우 발생할 수 있습니다. Chrome 개발자 콘솔은 개발자가 혼합 콘텐츠 오류를 해결하는 데 도움이 될 수 있습니다. 개발자는 콘텐츠가 로드되는 위치와 사용된 URL을 확인할 수 있습니다.

다른 SSL 오류는 도메인의 인증서 문제와 관련이 있을 수 있습니다. 일반적인 SSL 문제에 대해 여기에서 알아보세요.

Cloudflare CDN에 지원이 필요하신가요? Cloudflare 커뮤니티에 참여하여 Cloudflare 전문 사용자로부터 지원과 인사이트를 얻어보세요.

 

FAQ

CDN 소개

CDN(콘텐츠 전송 네트워크)은 웹 콘텐츠 사본을 저장하여 사용자에게 빠르게 전달하는 분산 서버 그룹입니다. 캐싱을 넘어, CDN은 스트리밍, 동적 콘텐츠, DDoS 완화, TLS 사용을 지원하는 서비스를 통해 콘텐츠 전송을 가속화하고 사용자 경험을 개선하는 데 도움이 됩니다.

CDN으로 웹 사이트 성능이 어떻게 향상될 수 있을까요?

CDN은 최종 사용자와 원본 서버 사이에 위치하여 웹 사이트 콘텐츠 전송을 가속화함으로써 사용자가 웹 사이트를 더 빠르게 로드하는 데 도움이 됩니다. CDN은 사용자와 요청한 콘텐츠 간의 거리를 줄이고, 파일을 최적화하여 더 빠르게 전달할 수 있도록 함으로써 이를 수행합니다.

CDN이 느리게 작동할 수 있는 이유는?

CDN 성능 저하를 일으킬 수 있는 문제로는 글로벌 도달 범위 부족, 원본 서버 문제, 동적 콘텐츠가 제대로 로드되지 않음, 파일 최적화되지 않음, 렌더링 차단 리소스, 캐시되지 않은 타사 스크립트, 캐시 적중률 낮음 등이 있습니다.

낮은 캐시 적중률이란 무엇이며 왜 중요할까요?

캐시 적중률이 낮다는 것은 웹 페이지의 대부분의 콘텐츠가 CDN의 캐시에서 제공되지 않아 사용자의 브라우저가 원본 서버에서 이를 가져와야 함을 의미합니다. 해당 웹 페이지의 아키텍처에 따라 페이지 로드 시간이 느려지고 송신 수수료로 인해 운영 비용이 증가할 수 있습니다.

캐시 적중률이 낮아지는 원인은?

낮은 캐시 적중률은 잘못 구성된 캐시 규칙, URL 유형(예: 쿼리 문자열)에 따른 자산의 캐싱 수준 변화, 원본 서버의 캐시 제어 헤더와 CDN 캐싱 규칙 간의 충돌로 인해 발생할 수 있습니다.

CDN을 사용하는 웹 사이트에 왜 오래된 콘텐츠가 나타날 수 있을까요?

캐시된 콘텐츠의 Time-To-Live(TTL) 설정이 너무 높으면 오래된 콘텐츠가 나타날 수 있습니다. Time To Live는 CDN 또는 브라우저가 사본을 새로 고치기 전에 콘텐츠가 캐시되는 시간을 결정합니다. TTL을 낮추거나 캐시를 지우면 문제를 해결할 수 있습니다.