발표 소개와 목표
게임 클라이언트 공통 개발팀 소속으로, 이번 세션을 통해 웹 캐시가 무엇인지 이해하고 쉽고 효율적으로 쓰는 법을 알게 될 것이라고 소개한다. 캐시가 성능 향상에 널리 쓰인다는 배경을 짧게 짚는다.
글로벌 게임에서 이벤트 배너가 늦게 떠 유저 참여가 떨어진 문제를 소개한다. 해외 네트워크가 느린 탓임을 파악하고 로컬 저장으로 바꿨지만, 배너 교체 때마다 개발자가 직접 올려야 하는 버전·관리 부담을 겪는다.
웹 캐시를 쓰면 서버가 검증해 주어 동일 URL로 버전 업데이트 없이 이벤트 담당자가 이미지만 올려도 바로 반영된다는 점을 알게 된다. 성능뿐 아니라 관리 포인트 감소, 외부 리소스 처리까지 가능함을 강조한다.
웹 캐시는 HTTP 기반으로 콘텐츠를 저장·재사용하는 브라우저의 캐시 형태다. 일반 요청은 200 OK, 웹 캐시 요청은 변경 없을 때 304 Not Modified로 데이터를 전송하지 않아 용량이 줄고 약 2배 빨라짐을 실측으로 보여준다.
유니티는 웹 캐시를 직접 지원하지 않고 에셋번들 매니페스트·해시 버전 관리만 제공한다. ETag·Last-Modified 필드를 캐시에 저장하고 요청 시 If-None-Match·If-Modified-Since로 넣어 서버가 검증하도록 구현하는 방식을 설명한다.
캐시 용량이 차면 잘 안 쓰는 것부터 지우고, 유효기간(Age·Cache-Control max-age)으로 신선도를 판단해 만료된 것을 제거한다. 마이클 포터의 '전략은 하지 않을 것을 정하는 것'을 인용하며 불필요한 구현을 덜어내자고 제안한다.
NHN이 무료 제공하는 게임 패키지 매니저(웹뷰·에셋 관리·로그 뷰어·CacheStorage)를 소개한다. CacheStorage의 Request 함수와 콜백만으로 앞서 설명한 웹 캐시를 직접 구현하지 않고 간단히 사용할 수 있음을 보여준다.
검증 전략을 Always·Once·FirstPlay·Local 4가지로 분류하고, 각 유형의 성능·무결성 트레이드오프를 설명한다. 서버 유효기간과 별개로 클라이언트에서 시간제어를 걸어 더 공격적으로 캐싱해 성능과 무결성을 함께 잡는 법을 다룬다.