캐시 미스 및 캐시 적중: 발생 시(& 캐시 적중률 높이는 방법)
게시 됨: 2022-05-04견고한 캐싱 정책 없이 웹사이트 성능을 최적화하는 것은 모래 위에 집을 짓는 것과 같습니다.
최고의 재료와 도구를 사용할 수 있지만 기초가 탄탄하지 않으면 항상 진행을 방해하는 무언가가 있다고 느낄 것입니다.
캐싱 정책은 웹사이트의 뛰어난 웹 성능의 근간입니다. 적절한 캐싱 시스템이 있으면 사이트 속도를 크게 향상시킬 수 있습니다.
반대로 제대로 작동하는 캐싱 설정이 없으면 방문자의 요청으로 인해 캐시 누락이 발생하여 페이지 로드 시간이 느려집니다.
그리고 캐시 미스는 다음과 함께 다음 줄에서 다룰 주제 중 하나일 뿐입니다.
- 캐싱에 대한 간략한 소개
- 캐시 미스란 무엇입니까?
- 캐시 적중이란 무엇입니까?
- 캐시 적중률이란 무엇이며 어떻게 계산합니까?
- 좋은 캐시 적중률이란 무엇입니까?
- 캐시 적중률을 높이는 방법은 무엇입니까?
- NitroPack - 우수한 캐시 적중률을 달성하는 가장 쉬운 방법입니다.
의 시작하자!
캐싱에 대한 간략한 소개
캐시 적중 및 실패의 세계를 탐구하기 전에 캐싱이 작동하는 방식, 캐싱이 제공하는 목적 및 최고의 속도 최적화 전략으로 간주되는 이유를 이해하는 것이 중요합니다.
캐싱을 이해하려면 한 발 뒤로 물러나서 방문자가 귀하의 사이트를 요청할 때 뒤에서 참여하는 전체 프로세스를 따라야 합니다.
귀하의 웹사이트는 HTML 문서, JavaScript 및 CSS 파일, 이미지 등으로 구성됩니다. 모두 원본 서버에 저장됩니다. 누군가 귀하의 웹사이트를 방문하기를 원할 때, 그들의 브라우저는 귀하의 원본 서버에 요청을 보내고, 그 요청은 다시 필요한 모든 파일이 포함된 응답을 보냅니다.

사이트의 파일을 동시에 요청하는 방문자가 10명이라면 문제가 없을 것이며 서버는 이를 매우 쉽게 처리할 수 있습니다.
그러나 이 모델은 100,000명의 방문자가 귀하의 웹사이트를 방문하기를 원할 때 작동하지 않습니다.
서버는 동시에 처리할 수 있는 요청 수에 제한이 있으며, 그 제한 이후의 모든 요청은 대기열에 들어가므로 방문자의 로딩 시간이 길어집니다.

그것이 캐싱이 들어오는 곳입니다.
간단히 말해서 캐싱은 사이트 데이터(HTML, CSS, JS, 이미지 등)의 복사본을 웹 캐시라는 다른 위치에 저장하는 프로세스입니다.
웹 캐시는 사용자와 오리진 사이의 중개자 역할을 합니다. 그렇게 하면 요청이 캐시에서 제공되고 서버에서 검색되지 않습니다.

결과적으로 페이지 로드 속도가 훨씬 빨라집니다.
다양한 유형의 캐싱 분류를 찾을 수 있습니다. 그러나 이 기사의 목적과 캐시 적중 및 누락이 발생하는 시기를 이해하기 위해 가장 많이 사용되는 두 가지 유형인 브라우저 및 프록시 캐싱을 살펴보겠습니다.
브라우저 캐싱
각 브라우저에는 고유한 캐싱 정책이 있으며 사용자 컴퓨터에 로컬로 데이터를 저장할 수 있습니다.
이전에 방문한 페이지를 빠르게 로드할 수 있기 때문에 유용합니다. 사실, 브라우저 캐싱은 뒤로 및 앞으로 버튼이 마법처럼 작동할 수 있는 주된 이유입니다.

불행히도 브라우저 캐싱은 장치별로 작동하도록 제한됩니다. 그러나 가장 큰 장점은 전체 네트워크 요청을 저장할 수 있으므로 필수 항목입니다.
프록시 서버 캐싱
프록시 캐싱은 서버의 로드를 완화하고 최종 사용자에게 상대적으로 더 빠른 콘텐츠를 제공하는 데 도움이 됩니다. 최상의 시나리오는 프록시 캐싱이 브라우저 캐싱과 함께 작동하는 경우입니다.
프록시 서버는 전 세계에 분산되어 있습니다. 일반적으로 CDN(콘텐츠 전송 네트워크) 공급자가 유지 관리합니다.
프록시는 사용자와 원본 서버 사이의 중개자입니다. 이를 사용하여 다양한 위치에 콘텐츠를 캐시할 수 있으며, 그렇게 하면 콘텐츠가 사용자와 더 가까워지고 대기 시간과 네트워크 트래픽이 줄어듭니다.

브라우저 캐싱과 달리 프록시 서버 캐싱은 장치별로 제한되지 않으며 여러 사용자에게 동시에 콘텐츠를 제공할 수 있습니다.
이것이 캐싱의 요지입니다. 이것은 미묘한 주제이며 다양한 캐싱 유형의 장점과 단점, 캐싱 규칙을 설정하는 방법 등 앞으로 풀어야 할 사항이 훨씬 더 많습니다.
그러나 그것이 이 기사의 초점이 아닙니다.
주제에 대해 더 자세히 알고 싶다면 웹 캐싱 101: HTTP 캐싱에 대한 초심자 가이드(예제, 팁 및 전략)를 참조하십시오.
또는 YouTube 동영상을 시청하세요.
현재로서는 웹 캐시에서 요청된 데이터를 찾을 수 없는 경우 지연과 문제가 발생하기 시작한다는 점을 기억하는 것이 중요합니다. 이것은 우리에게 캐시 미스를 가져옵니다.
캐시 미스란?
캐시 누락은 시스템, 애플리케이션 또는 브라우저가 캐시에서 데이터를 검색하도록 요청하지만 해당 특정 데이터를 현재 캐시 메모리에서 찾을 수 없을 때 발생합니다.
캐시 미스가 발생하면 요청이 원본 서버로 전달됩니다.
원본에서 데이터가 검색되면 동일한 데이터에 대한 유사한 향후 요청을 예상하여 해당 데이터가 복사되어 캐시 메모리에 저장됩니다.
캐시 누락이 발생하는 데는 여러 가지 이유가 있습니다.
예를 들어 특정 데이터는 처음부터 캐시되지 않았습니다.
전자 상거래 사이트가 있고 방금 새 제품 페이지를 추가했다고 가정해 보겠습니다. 아무도 요청하지 않았기 때문에 모든 이미지, HTML, CSS 및 JavaScript 파일은 캐시 메모리에 추가된 적이 없습니다. 즉, 첫 번째 방문자는 페이지를 로드하기 위해 원본에 요청을 보내야 합니다. 첫 번째 요청 후 데이터는 캐시로 전송되어 캐시에서 제공됩니다.
캐시 누락의 또 다른 가능성은 캐시된 데이터가 어느 시점에서 제거되었다는 것입니다.
다시 말하지만, 더 많은 공간이 필요했거나, 응용 프로그램에서 제거를 요청했거나, 데이터에 대한 TTL(Time to Live) 정책이 만료된 등 이러한 시나리오로 이어질 수 있는 몇 가지 요인이 있습니다.
TTL(Time to Live)에 대한 자세한 내용은 기사 뒷부분에서 다루겠습니다.
이유가 무엇이든 사실은 모든 캐시 누락이 더 긴 대기 시간, 느린 로드 시간, 나쁜 사용자 경험 및 불만족스러운 방문자로 이어집니다.
그러나 캐시 적중률을 100% 달성해야 한다는 인상을 남기고 싶지 않습니다. 그것은 현실적이지 않습니다.
또한 제공하는 콘텐츠가 항상 최신 상태인지 확인해야 할 수 있으므로 캐시 누락이 필요한 경우가 있습니다.

예를 들어 bbc.com과 같은 뉴스 웹사이트는 속보가 보고되어야 하기 때문에 하루 종일 여러 번 홈페이지 콘텐츠를 변경할 수 있습니다. 이 경우 캐시 적중은 독자가 웹 사이트의 최신 버전을 보지 못했고 각각 최신 뉴스를 놓쳤음을 의미합니다.
따라서 캐시 미스가 발생할 수 있는 장점이 있습니다.
그러나 뉴스 웹사이트가 없고 콘텐츠를 정기적으로 변경하지 않는 경우 캐시 누락을 가능한 한 낮게 유지하고 캐시 적중을 최대한 높게 유지하는 것을 목표로 해야 합니다.
캐시 적중이란 무엇입니까?
캐시 적중은 요청된 데이터가 캐시에서 성공적으로 제공될 때 발생합니다.
예를 들어 사용자가 판매하는 제품의 이미지를 표시해야 하는 제품 페이지 중 하나를 방문하는 경우 브라우저는 이 이미지에 대한 요청을 캐시(브라우저 또는 CDN)로 보냅니다. CDN의 저장소에 이미지 복사본이 있는 경우 요청은 캐시 적중을 초래하고 이미지는 브라우저로 다시 전송됩니다.
캐시 적중률이란 무엇이며 어떻게 계산합니까?
캐시 적중률은 캐시가 수신한 총 요청 수와 비교하여 캐시가 저장소에서 성공적으로 전달한 요청 수를 측정합니다.
캐시 적중률이 높다는 것은 대부분의 사용자 요청이 캐시에 의해 이행되었음을 의미하며, 이는 다시 로드 시간이 더 빨라졌음을 의미합니다.
다음 공식을 사용하여 캐시 적중률을 계산할 수 있습니다.

그러나 대부분의 CDN 제공업체에서 이를 계산하므로 필요하지 않을 수 있습니다.
NitroPack의 대시보드에는 다음 정보도 표시됩니다.

좋은 캐시 적중률이란 무엇입니까?
일반적 으로 캐시 적중률이 80% 이상이면 대부분의 요청이 캐시에서 처리된다는 의미이므로 좋은 결과 입니다.
정적 웹사이트에서 80% 미만이면 비효율적인 캐싱 정책을 나타냅니다.
세계에서 가장 큰 CDN 제공업체 중 하나인 Cloudflare에 따르면:
NitroPack의 글로벌 캐시 적중률은 90%입니다. 그리고 전체 NitroPack 사용자의 약 70%가 80% 이상의 캐시 적중률을 경험합니다.
캐시 적중률을 높이는 방법은 무엇입니까?
특정 단계를 수행하여 캐시 누락 횟수를 줄여 캐시 적중률을 높일 수 있습니다.
1. 웹사이트의 필요에 따라 캐싱 규칙 설정
캐시 제어 헤더를 사용하면 콘텐츠 제공을 최적화하기 위해 다양한 캐싱 규칙을 설정할 수 있습니다.
일부 규칙은 다음과 같습니다.
- no-store 는 어떤 상황에서도 리소스 버전을 저장하지 않도록 웹 캐시에 지시합니다.
- no-cache 는 웹 캐시에 사용자에게 제공하기 전에 원본 서버에서 캐시된 콘텐츠의 유효성을 검사해야 한다고 알려줍니다.
- max-age 는 캐시가 저장된 리소스를 다시 다운로드하거나 원본 서버에서 유효성을 다시 검사하기 전에 저장할 수 있는 최대 시간(초)을 설정합니다. 그 후에는 콘텐츠가 오래된 것으로 표시됩니다.
- s-maxage 는 max-age와 똑같은 일을 하지만 프록시 캐시에만 해당합니다.
- private 은 개인 캐시만 응답을 저장할 수 있음을 웹 캐시에 알립니다.
- public 은 응답을 public으로 표시합니다. 모든 중간 캐시는 이 명령어로 표시된 응답을 저장할 수 있습니다.

콘텐츠에 가장 적합한 TTL(원점에서 업데이트된 정보를 검색하기 전에 캐시가 데이터를 유지하는 기간)을 설정해야 합니다.
예를 들어 자산이 약 2개월마다 변경되는 경우 50일의 max-age 헤더가 적절할 수 있습니다. 그러나 자산이 매일 변경되는 경우 캐시 없는 헤더를 사용할 수 있습니다.
YouTube 동영상에서 캐시 제어 헤더, 캐시 신선도 및 유효성 검사에 대한 자세한 정보를 찾을 수 있습니다.
2. UTM 매개변수 무시
여러 광고 캠페인(예: Facebook 광고, Google 광고 등)을 실행하면 특정 UTM 매개변수가 있는 다른 URL이 생성됩니다.
결과적으로 최적화해야 하는 여러 변형(다른 UTM 매개변수)이 있는 단일 페이지가 있습니다.

이는 각 URL 변형이 고유한 개체로 간주되고 모든 요청이 원본 서버로 전달되기 때문에 문제입니다.
따라서 요청된 콘텐츠가 웹 캐시에서 사용 가능하더라도 각 요청은 캐시 미스로 분류됩니다.
이는 불필요하게 낮은 캐시 적중률로 이어집니다.
NitroPack - 우수한 캐시 적중률을 달성하는 가장 쉬운 방법
우리가 다룬 모든 것이 끝나면 높은 캐시 적중률을 달성하는 전체 프로세스가 다소 압도적으로 들릴 수 있습니다.
좋은 소식은 CDN 공급자와 함께 작업하는 경우 캐시 제어 헤더와 같이 내가 언급한 대부분의 항목이 이미 처리되었을 수 있다는 것입니다.
다른 모든 것에는 캐싱 플러그인을 사용할 수 있습니다.
예를 들어, NitroPack은 사용자의 높은 캐시 적중률을 보장하는 즉시 사용 가능한 기능과 함께 제공됩니다. 여기에는 다음이 포함됩니다.
- 캐시 워밍업은 웹사이트에 대한 유기적 방문을 시뮬레이션하여 NitroPack이 데스크톱 및 모바일 장치용 웹사이트의 최적화된(캐시된) 버전을 자동으로 준비하도록 합니다.
- 캐시 무효화는 캐시된 콘텐츠를 "부실"로 표시하지만 새로 최적화된 콘텐츠를 사용할 수 있을 때까지 계속 제공합니다. 결과적으로 방문자는 잠시 동안 구식이 될 수 있지만 항상 최적화된 콘텐츠를 볼 수 있습니다.
- CDN이 내장되어 있어 선택한 캐싱 플러그인과 CDN을 동기화할 필요가 없습니다. 시간이 많이 걸리고 불편하며 예상치 못한 문제가 발생할 수 있습니다.
- NitroPack이 마케팅 캠페인을 실행할 때 걱정할 필요가 없도록 기본적으로 일부 일반적으로 사용되는 UTM(및 기타) 매개변수를 무시할 수 있는 무시된 매개변수 옵션입니다.

하지만 내 말을 받아들일 필요는 없습니다. NitroPack을 무료로 테스트하고 그 영향을 직접 확인하십시오.
