김지팡의 저장소
Published 2024. 2. 3. 18:33
Caching(캐싱) TIL
728x90

 

📚 www.playgroundofkimjipang.com 에 접속하다

어느 날 동현이는 미국의 한 사이트인 playground of kimjipang이라는 사이트에 접속을 했다. 그다음 날 동현이는 또 해당 사이트에 접속을 했는데, 해당 사이트에 접속한 첫날보다 페이지를 불러오는 속도가 더 빠르다는 것을 느꼈다.

 

 

📚 진짜 빨랐을까? 빨랐다면 왜?

결론부터 말하면 동현이가 느낀 것은 정확하다. 더 빠른 이유를 이야기하기 위해서는 '캐싱'이라는 개념을 알아야 한다.

 

 

📚 캐싱

캐싱은 마치 물이 필요할 때마다 100km 거리에 있는 슈퍼를 가는 것이 아니라 한 번 갈 때 물을 대용량으로 왕창 산 다음에 집 창고에 저장해 두고 필요할 때마다 집 창고에서 꺼내 마시는 것과 같다.

 

당연하게도 후자가 엄청난 메리트가 있을 것이다. 이처럼 캐싱은 데이터나 리소스를 미리 저장해 두고, 나중에 필요할 때 빠르게 데이터와 리소스에 접근할 수 있도록 도와주는 기술이다.

 

 

📚 그래서 왜 빠른 건데?

캐싱은 마치 물을 대용량으로 구매해 저장해 두고 마시는 것과도 같다고 하였다. 우리가 어떠한 요청을 할 때에는 요청에 대한 응답을 받아야 하는데 이 응답이 데이터 혹은 리소스가 된다.

 

즉, 우리가 요청한 것에 대한 응답을 캐싱(저장해 두기)하고 있는 것이다. 그래서 같은 요청이 왔을 때 서버에 요청을 보내지 않고, 캐싱이 된 곳을 가 필요한 리소스를 받아올 수 있는 것이다.

 

 

📚 어떤 것들을 캐싱할까?

모든 리소스에 대해서 캐싱이 가능하기는 하다. 하지만, 정적 콘텐츠(이미지, CSS, JavaScript 파일 등)에 대해서는 캐싱 처리를 하고, 동적 콘텐츠(실시간 혹은 일정 주기로 변하는 데이터)에 대해서는 캐싱을 하지 않는다. 그 이유는 동적 콘텐츠는 변하는 콘텐츠이기 때문에 리소스를 캐싱해 두어도 다시 서버로 직접 요청해야 하는 상황이 빈번하게 혹은 매번 발생할 수 있기 때문이다.

❗️

글에서는 동적 콘텐츠도 캐싱은 가능하나, 캐싱을 하지 않는다고 하였다. 하지만, 아주 그런 것은 아니었다. 웹 애플리케이션 서버를 예로 들면, 데이터베이스 쿼리 결과나 자주 사용되는 계산 결과 등을 메모리 내에 캐시 한다고 한다. 이로 인해, 다음 요청 때 빠르게 리소스를 받을 수 있게 된다.

 

 

📚 수강 신청을 조금이라도 빨리하는 법

사실 수강 신청을 빨리하기 가장 효과적인 방법은 수강 신청 대기 큐에 1등으로 들어가는 것이다. 하지만, 급격하게 몰리는 사용자들 사이에서 1등으로 대기 큐에 들어가는 것은 쉽지 않다. 이 방법을 대신해서는 캐싱을 활용할 수가 있다. 캐싱은 요청에 대한 리소스들을 저장해 두는 기술이기에 페이지의 필요한 정보들을 캐싱해 두면 요청이 서버에까지 갈 필요 없이 캐싱해 둔 곳에서 리소스들을 가져올 수 있다.

 

 

📚 캐싱이 되는 곳은 어디일까?

캐싱에 대해 알아보다 보니 캐싱 기술은 어디에서 사용되는지 궁금했다. 찾아보니 로컬, [CDN, 프록시, 리버스 프록시]와 같은 네트워크, 기타 네트워크 장비 및 소프트웨어에 사용된다고 한다. 근데 캐싱이 무엇인지를 정확히 아는 것이 중요하지 어디에서 캐싱 기술을 사용하는지는 크게 중요하지는 않을 거 같당 😲

728x90
profile

김지팡의 저장소

@김지팡

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!