왜 "캐시 좀 지워보세요"라고 할까 — 캐시와 CDN

4 분 소요

화면이 이상하게 나오거나 바뀐 내용이 보이지 않는다고 개발자에게 말하면, 높은 확률로 같은 대답이 돌아옵니다. “캐시를 한 번 지워 보세요.” 또는 “강력 새로고침을 해 보세요.” 분명 고쳤다는데 내 화면에는 옛날 모습 그대로일 때, 또는 나는 멀쩡한데 동료만 깨진 화면을 볼 때 자주 듣는 말입니다.

대체 캐시가 무엇이길래 지우라는 말이 이렇게 자주 나오는 걸까요. 이 글에서는 캐시가 무엇이고, 그와 비슷한 CDN이 어떻게 웹을 빠르게 만드는지 코드 없이 풀어 보겠습니다.

캐시는 자주 쓰는 것을 가까이 두는 것입니다 #

캐시의 발상은 단순합니다. 자주 쓰는 것을 매번 멀리서 가져오지 말고, 가까운 곳에 사본을 두고 꺼내 쓰자는 것입니다.

자주 보는 책을 도서관까지 가지 않고 책상 위에 두는 것과 같습니다. 책상에 있는 책은 손만 뻗으면 닿으니, 매번 도서관을 오가는 시간을 아낄 수 있습니다. 컴퓨터도 마찬가지입니다. 한 번 가져온 데이터를 가까운 곳에 보관해 두었다가, 다음에 같은 것이 필요하면 멀리 가지 않고 그 사본을 바로 씁니다. 이렇게 하면 같은 일을 훨씬 빠르게 처리할 수 있습니다.

이 발상은 웹 곳곳에 쓰입니다. 그중 우리가 가장 자주 마주치는 것이 브라우저 캐시입니다.

브라우저 캐시는 내 기기에 남은 사본입니다 #

웹사이트 하나를 열면 글자만 오는 게 아닙니다. 이미지, 화면을 꾸미는 디자인 파일, 동작을 담은 파일까지 여러 가지가 함께 내려옵니다. 그런데 이것들은 페이지를 열 때마다 크게 바뀌지 않습니다. 그래서 브라우저는 한 번 받은 파일을 내 기기에 저장해 두었다가, 다음에 같은 사이트를 열면 새로 받지 않고 저장해 둔 사본을 씁니다. 사이트가 두 번째부터 더 빨리 뜨는 것은 이 덕분입니다.

문제는 여기서 생깁니다. 개발자가 디자인 파일을 새것으로 바꿔 배포해도, 내 브라우저는 전에 받아 둔 게 있다며 옛 사본을 그대로 보여 줄 수 있습니다. 그래서 분명히 고쳤다는데 내 화면만 옛날 그대로인 일이 벌어집니다. 이때 “캐시를 지워 보세요"라는 말은 저장해 둔 옛 사본을 버리고 새로 받아 오라는 뜻입니다. 강력 새로고침도 같은 일을 합니다. 저장된 사본을 무시하고 서버에서 최신 파일을 다시 받아 옵니다.

CDN은 전 세계에 흩어 둔 사본 창고입니다 #

캐시의 발상을 더 큰 규모로 옮긴 것이 CDN입니다. 우리말로 콘텐츠 전송 네트워크라고 부릅니다.

서비스의 서버가 한국에 있다고 해 보겠습니다. 지구 반대편 사용자가 이 사이트를 열면, 데이터가 먼 거리를 오가야 해서 느려집니다. CDN은 이 문제를 사본으로 풉니다. 이미지나 디자인 파일처럼 자주 쓰는 것들을 세계 여러 곳에 미리 복사해 두고, 사용자가 접속하면 그 사람과 가장 가까운 곳에서 내려보냅니다.

전국에 흩어진 편의점 체인과 비슷합니다. 물건을 사러 본사 창고까지 갈 필요 없이, 집 앞 편의점에서 같은 물건을 받는 것입니다. 멀리 있는 본사를 오가는 대신 가까운 곳에서 받으니 훨씬 빠르고, 본사에 손님이 한꺼번에 몰리는 일도 줄어듭니다. CDN은 사용자에게는 속도를, 서버에는 부담을 덜어 주는 장치입니다.

캐시는 빠르지만 옛것을 보여 줄 수 있습니다 #

캐시는 속도를 위한 도구지만, 그 대가로 옛 내용을 보여 줄 위험을 안고 있습니다. 사본을 두고 쓰는 이상, 원본이 바뀌어도 사본이 그대로면 옛것이 보이기 때문입니다. 앞서 본 “고쳤는데 안 바뀌는” 문제가 바로 이 대가입니다.

그래서 개발자는 새 내용을 확실히 보여 줘야 할 때 여러 방법을 씁니다. 파일을 바꿀 때마다 이름을 슬쩍 다르게 붙여 브라우저가 처음 보는 파일이라 여기고 새로 받게 만들기도 하고, CDN에 흩어진 옛 사본을 한꺼번에 버리도록 명령하기도 합니다. 이렇게 옛 사본을 거둬들이는 일을 캐시 무효화라고 부릅니다. 배포한 내용이 사용자에게 곧바로 보이지 않을 때 개발팀이 “캐시 때문"이라고 말하는 상황이 이것입니다.

왜 비개발자가 알면 일이 편해지는가 #

  • 나는 보이는데 동료는 안 보이는 일이 이해됩니다. 각자의 브라우저가 저장한 사본이 달라서 생기는 일입니다. 캐시를 비우고 다시 보면 대개 같은 화면이 됩니다.
  • 배포 직후 당황하지 않습니다. 새 내용이 곧바로 안 보여도 무조건 잘못된 배포는 아닙니다. 캐시가 옛 사본을 잠시 더 보여 주는 중일 수 있습니다.
  • 확인은 캐시를 비우고 합니다. 새로 바뀐 화면을 점검할 때는 캐시를 지우거나 강력 새로고침으로 최신 상태를 본 뒤 판단하면, 옛 사본에 속는 일을 줄일 수 있습니다.

마무리 #

캐시는 자주 쓰는 것을 가까이 두어 속도를 높이는 발상이고, CDN은 그 사본을 전 세계에 흩어 두어 누구에게나 빠르게 전하는 장치입니다. 둘 다 웹을 빠르게 만드는 든든한 도구지만, 사본을 쓰는 만큼 옛 내용을 보여 줄 수 있다는 대가를 함께 지닙니다. “캐시 좀 지워 보세요"라는 말이 왜 그렇게 자주 나오는지 이제 감이 잡히셨을 것입니다.

서버와 배포가 어떻게 이루어지는지 더 알고 싶다면 서버, 클라우드, 그리고 배포를, 그 서버를 빌려 쓰는 클라우드가 궁금하다면 클라우드란 결국 남의 컴퓨터를 빌려 쓰는 것을 함께 읽어 보시길 권합니다.

X