같은 답을 두 번 안 만들기(캐시)

손님마다 화면을 처음부터 새로 만들면 사람이 몰리는 날 가장 먼저 무너져요. 한 번 만든 답을 정해진 시간만 재활용하고, 바뀌면 바로 버리는 규칙이 캐시예요.

쉽게 말하면

점심 장사 전에 밑반찬을 미리 만들어 두는 것과 같아요. 주문이 들어올 때마다 처음부터 무치면 열 명까지는 되지만, 오십 명이 몰리면 주방이 멈춰요. 미리 만들어 접시에 담아 두면 내주기만 하면 되죠. 대신 미리 만든 것은 시간이 지나면 상해요. 캐시가 정확히 이 두 가지예요. 빨라지는 대신, 낡은 것을 내줄 위험을 같이 안아요.

그래서 캐시 이야기는 늘 질문 두 개예요. 얼마나 오래 재활용할까, 그리고 바뀌었을 때 어떻게 버릴까. 앞만 정하고 뒤를 빼먹으면 손님이 지난주 가격을 보게 돼요.

캐시 없이
손님 요청 → 매번 처음부터 장부 조회 12번 + 화면 조립

한가할 때는 아무 문제 없어요. 사람이 몰리는 순간 대기줄이 생기고, 관계없는 화면까지 같이 느려져요.

캐시 있게
손님 요청 → 만들어 둔 사본 30초 안에 온 요청은 사본으로

같은 화면 백 명분이 계산 한 번으로 끝나요. 대가는 최대 30초 묵은 정보를 보여준다는 것이에요.

사본은 다섯 군데에 쌓여요

캐시는 한 곳이 아니에요. 요청이 지나가는 길목마다 사본이 남아요. 사고가 길어지는 이유는 대개 어느 층 사본을 지워야 하는지 몰라서예요.

쌓이는 곳누구 것인가치우는 방법여기서 나는 사고
손님 브라우저그 손님 컴퓨터 안. 내가 직접 손댈 수 없어요손님이 강제 새로고침(Ctrl+Shift+R)나만 옛 화면이 보이거나, 나만 새 화면이 보여요
중간 배달 거점(CDN)전 세계에 흩어져 있는 사본 창고관리 화면에서 비우기(퍼지)가격을 고쳤는데 지역마다 다르게 보여요
내 서버가 만든 화면 사본내 서비스 안다시 게시하거나 사본 비우기품절인데 판매 중으로 보여요
장부 조회 결과내 서비스 안. 데이터베이스에게 물어본 답정해진 시간이 지나면 자동 폐기숫자가 실제와 몇십 초 어긋나요
비싼 계산 결과(AI 답·통계)한 번 만드는 데 돈이나 시간이 드는 것이름표를 바꿔 새로 계산질문이 조금 달라도 옛 답이 나와요

사고 났을 때 치우는 순서

위에서 아래가 아니라 아래에서 위로 치워요. 서버 사본이 낡았는데 중간 거점만 비우면, 거점이 다시 낡은 사본을 받아 와서 그대로예요. 같은 자리를 두 번 비우게 되고 그 사이 손님은 계속 옛 화면을 봐요.

왜 이런 일이 생기나

느려지는 진짜 이유는 화면 한 장의 무게가 아니라 같은 무게를 몇 번 드는가예요. 순서를 보면 원리가 한 번에 잡혀요.

  1. 1화면 한 장을 만들 때 서비스는 장부(데이터베이스)를 여러 번 열어요. 상품·재고·후기·배송비를 따로 조회하니까요.
  2. 2손님이 열 명이면 그 조회가 열 배가 돼요. 코드는 그대로인데 일의 양만 늘어요.
  3. 3장부가 동시에 잡아 줄 수 있는 손이 다 차면, 다음 요청은 줄을 서서 기다려요. 이때부터 갑자기 느려져요. 조금씩 느려지지 않아요.
  4. 4기다리다 정해진 시간을 넘기면 오류 화면이 떠요. 손님 눈에는 서비스가 죽은 거예요.

캐시는 2번을 끊어요. 열 명이 같은 화면을 봐도 장부는 한 번만 열어요. 캐시가 답한 비율이 열 번 중 아홉 번이면 장부가 하는 일은 10분의 1이 돼요. 서버를 열 배 큰 것으로 바꾸는 것과 비슷한 효과인데 돈은 거의 안 들어요. 캐시가 운영에서 가장 값싼 무기인 이유예요.

순서를 지켜야 이득만 남아요

느리면 먼저 속도사진 용량 쪽을 정리해요. 그걸 다 했는데도 사람이 몰릴 때만 느리면 그때가 캐시 차례예요. 순서를 바꾸면 낡은 화면 사고만 얻고 속도는 못 얻어요.

하면 안 되는 자리

캐시를 잘못 놓으면 속도 문제가 돈 문제와 개인정보 문제로 바뀌어요. 다음 다섯 가지는 기본값이 캐시 금지예요. 이 다섯 곳만 지키면 나머지는 마음 놓고 캐시해도 돼요.

대상캐시하면 벌어지는 일대신 이렇게
로그인한 뒤 보이는 화면한 손님의 이름과 주문 내역이 다른 손님 화면에 그대로 떠요. 개인정보 유출 사고예요이 화면은 어디에도 저장하지 말라고 표시해요
재고와 남은 자리1개 남았는데 여러 명이 결제해요. 초과 판매는 환불과 사과로 끝나요화면 껍데기만 캐시하고 남은 수량은 실시간으로
가격과 할인끝난 행사 가격으로 주문이 들어와요. 표시된 가격대로 달라는 요구를 거절하기 어려워요금액은 결제 순간 서버에서 다시 확인
결제·정산 결과이미 낸 손님에게 미결제로 보이거나 그 반대가 생겨요돈에 관한 화면은 항상 새로 조회
장바구니·알림 설정처럼 손님별인 것남의 장바구니가 보여요. 원인은 늘 같아요손님별로 칸을 나누거나 아예 안 해요
자주 나는 실수
"사이트 전체를 캐시로 빠르게" 로그인 뒤 화면까지 공용 사본 허용

중간 거점이 한 사람의 화면을 받아 다음 사람에게 그대로 내줘요. 속도를 얻고 개인정보 사고를 같이 얻어요.

갈라서 쓰기
공개 화면만 사본 허용 로그인 뒤 화면은 저장 금지

몰려서 느려지는 곳은 공개 화면이고, 사고가 나는 곳은 로그인 뒤 화면이에요. 둘을 갈라야 둘 다 잡아요.

무너지는 지점은 어디쯤인가

동시 접속 몇 명부터라고 숫자 하나로 말하면 거짓말이 돼요. 서버 크기와 화면 무게에 따라 다르니까요. 대신 무너지는 조건은 분명하고, 신호로 알아볼 수 있어요.

조건왜 여기서 무너지나신호
같은 화면 하나로 손님이 한꺼번에 들어올 때(문자 발송·SNS 노출 직후)그 한 장을 만드는 일이 동시에 수백 번 겹쳐요평소엔 빠른데 홍보 직후 몇 분만 느려요
사본 유효시간이 동시에 끝날 때사본이 사라진 순간 밀린 요청이 전부 원본으로 몰려요. 캐시가 없을 때보다 나빠질 수도 있어요정확히 몇 분 간격으로 반복해서 느려요
목록 항목이 수천 건으로 늘 때한 장을 만드는 비용 자체가 커져서 사본이 만료될 때마다 크게 아파요목록 첫 화면만 유독 느려요
로그인한 손님 비율이 높을 때손님별 화면은 사본을 나눠 쓸 수 없어서 캐시가 거의 안 먹혀요비회원은 빠르고 회원은 느려요

둘째 줄이 가장 안 알려진 함정

사본이 한꺼번에 만료되면 원본 한 곳으로 요청이 몰려요. 모든 가게가 같은 시각에 문을 여는 것과 같아요. 그래서 유효시간을 조금씩 다르게 흩고, 새로 만드는 동안에는 한 명만 만들고 나머지는 그 결과를 기다리게 해요. 맡길 때 이 두 마디를 그대로 말하면 됩니다.

선택지와 각각의 대가

캐시는 켜고 끄는 스위치가 아니라 네 가지 중에서 고르는 일이에요. 각각 값과 대가가 달라요.

방식얼마나 최신인가얼마나 버티나고르는 자리
안 씀항상 최신약함. 서버 비용이 계속 나가요재고·결제·로그인 뒤 화면
짧게만(몇 초에서 몇 분)최대 그 시간만큼 낡음몰릴 때 잘 버팀상품 목록·후기·첫 화면
오래 두고 바뀌면 즉시 버리기고치면 바로 반영가장 강함소개글·안내처럼 자주 안 바뀌는 것
낡은 것 먼저 주고 뒤에서 새로 만들기누군가 한 번은 낡은 것을 봄강함. 손님 체감은 즉시공지·글 목록처럼 조금 낡아도 되는 것

세 번째가 가장 좋아 보이지만 버리는 일을 누가 언제 하는지가 정해져 있어야 성립해요. 그게 비어 있으면 곧 "고쳤는데 안 바뀌어요"가 됩니다. 사진이나 글꼴 같은 파일은 지우는 대신 이름을 바꿔 내보내는 방법을 많이 써요. 새 이름이면 옛 사본은 아무도 찾지 않으니까요.

고쳤는데 안 바뀔 때

장면 1 · 손님 문의

행사 끝났다고 하셨는데 제 화면엔 아직 할인 가격이 떠요. 이 가격으로 주문할게요.

손님 브라우저나 중간 거점에 옛 사본이 남은 거예요. 급한 순서가 중요해요. 먼저 결제 금액을 서버가 다시 확인하는지 보고, 그다음 사본을 비워요. 화면만 고치면 그 사이 들어온 주문은 옛 금액으로 남아요.

장면 2 · 맡긴 개발자가 말했다

캐시 때문일 거예요. 강제 새로고침 한번 해 보세요.

절반만 맞는 답이에요. 강제 새로고침은 내 브라우저 사본만 지워요. 나는 정상으로 보이고 손님은 그대로일 수 있어요. 이렇게 되물으세요. 어느 층 사본인지, 비우는 방법이 무엇인지, 앞으로 게시할 때 자동으로 비워지는지.

  1. 1다른 사람 휴대폰이나 다른 인터넷으로 열어 봐요. 거기도 옛 화면이면 내 브라우저 문제가 아니에요.
  2. 2강제 새로고침(Ctrl+Shift+R)으로 바뀌면 손님 브라우저 층이에요. 파일 이름을 바꿔 다시 게시하는 쪽이 손님에게 새로고침을 안내하는 것보다 확실해요.
  3. 3그래도 그대로면 중간 거점을 비워요. 관리 화면에 비우기 버튼이 있어요. 흩어진 거점 전부에 퍼지는 데 시간이 조금 걸려요.
  4. 4여전히 그대로면 서버 안 사본이에요. 다시 게시하거나 유효시간이 지나기를 기다려요.
  5. 5어느 층인지 확실히 보고 싶으면 개발자 도구 네트워크 탭에서 그 요청이 사본에서 온 것인지 확인할 수 있어요.

남에게 맡길 때 요구할 것

캐시는 눈에 안 보여서 대충 해도 처음 몇 주는 티가 안 나요. 그래서 외주인수인계 때는 다섯 줄을 문서로 받아 두세요.

  1. 1층별 목록. 어디에 사본이 쌓이는지, 각 층 유효시간이 몇 초인지 적어 주세요.
  2. 2캐시 금지 목록. 로그인 뒤 화면·재고·가격·결제 화면이 금지로 표시됐는지 확인해 주세요.
  3. 3버리는 시점. 상품이나 가격을 고치면 사본이 자동으로 지워지나요, 사람이 눌러야 하나요.
  4. 4내가 누를 버튼. 사고가 났을 때 내가 직접 비울 수 있는 화면과 그 위치를 알려 주세요.
  5. 5몰릴 때 대비. 유효시간을 흩어 놓았는지, 새로 만드는 동안 한 명만 만들게 했는지.
Q. 캐시를 켜면 손님 정보가 섞일 수 있다는 게 정말인가요?
잘못 설정하면 정말 생겨요. 원인은 거의 항상 로그인 뒤 화면을 공용 사본으로 허용한 실수예요. 그래서 시작할 때 "로그인 뒤 화면은 저장 금지"를 먼저 못박고 나머지를 정해요.
Q. 그럼 안전하게 아예 끄면 안 되나요?
손님이 적을 때는 그래도 돼요. 다만 홍보가 성공한 날 서비스가 멈추는 쪽이 손해가 더 커요. 공개 화면만 캐시하는 절충이 보통 답이에요.
Q. 유효시간은 몇 초로 하면 되나요?
주제마다 달라요. 기준은 "이 정보가 몇 초 낡아도 손님이 손해를 안 보나"예요. 후기 목록은 몇 분도 괜찮고, 남은 좌석은 0초예요.
Q. 사진과 글꼴도 캐시인가요?
네, 그리고 그쪽이 가장 안전한 캐시예요. 파일 이름에 버전 표시가 붙어 있으면 아주 오래 저장해도 사고가 없어요. 내용이 바뀌면 이름도 바뀌니까요.
Q. 사본을 다 비웠는데도 느려요.
그럼 캐시 문제가 아니었던 거예요. 원본을 만드는 일 자체가 무거운 경우니까 속도와 장부 조회 쪽을 봐요. 캐시는 무거운 일을 가려 주지만 가볍게 만들어 주진 않아요.
Q. AI가 만드는 답도 캐시할 수 있나요?
같은 질문에 같은 답을 줘도 되는 자리(고정 안내문·요약)라면 아껴지는 돈이 커요. 반대로 손님 상황이 섞이는 상담 답변은 위험해요. 옛 상황으로 답하게 되니까요.

확인해 보세요

홍보 문자를 보낸 직후 5분만 사이트가 느려져요. 어떻게 쓰는 게 맞을까요?

하나 더

재고가 1개인 상품 화면을 60초 캐시했어요. 무엇이 문제일까요?

직접 해보기

손님 눈으로 확인해 보세요

고친 내용을 게시한 다음, 로그인하지 않은 창(시크릿 창)으로 같은 주소를 열어 봐요. 내 화면과 다르면 어딘가에 사본이 남아 있다는 뜻이에요. 가격과 재고부터 보세요.

스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

저장 금지·개인용·몇 초짜리 · 웹에는 사본 규칙을 적는 칸이 있어요. 세 마디만 알면 대화가 돼요. 저장 금지는 어디에도 두지 말라는 뜻, 개인용은 손님 브라우저에만 두고 중간 거점에는 두지 말라는 뜻, 몇 초짜리는 그 시간만 재활용하라는 뜻이에요. 로그인 뒤 화면은 앞의 둘 중 하나여야 해요.

사본을 무엇으로 구분하는가 · 사본에는 이름표가 붙어요. 보통 주소가 이름표인데, 언어나 기기에 따라 화면이 달라지면 그 조건도 이름표에 들어가야 해요. 안 넣으면 한국어 손님에게 영어 화면이 가요. 반대로 손님별 값을 이름표에 넣으면 사본이 손님 수만큼 늘어서 캐시 효과가 사라져요. 이 균형이 캐시 설계의 절반이에요.

지우기와 이름 바꾸기 · 낡은 사본을 치우는 방법은 두 가지예요. 지우기는 즉시 시작되지만 흩어진 거점 전부에 퍼지는 데 시간이 걸려요. 이름 바꾸기는 지울 것이 없어서 확실해요. 그래서 사진·글꼴·프로그램 파일은 이름 바꾸기, 페이지는 지우기를 씁니다.

비유가 어디부터 다른가 · 밑반찬 비유는 미리 만들어 두고 시간이 지나면 버린다까지 맞아요. 다른 점은, 반찬은 하나 내주면 없어지는데 사본은 몇 명에게 내줘도 줄지 않아요. 그래서 손님이 늘 때 효과가 폭발해요. 대신 상한 사본도 똑같이 몇 명에게든 그대로 나가요. 이득과 손해가 같은 배수로 커져요.

이것만 기억하세요

  • ·캐시는 만들어 둔 답을 정해진 시간만 재활용하는 규칙이에요
  • ·빠름의 대가는 낡음이에요. 몇 초까지 낡아도 되는지 정하는 게 설계예요
  • ·로그인 뒤 화면·재고·가격·결제는 기본이 캐시 금지예요
  • ·사본은 브라우저·중간 거점·서버에 층으로 쌓여요. 아래층부터 치워요
  • ·맡길 때는 층별 유효시간과 버리는 시점을 문서로 받으세요
VibeCampus새 빌드