Home 캐시 최적화
Post
Cancel

캐시 최적화

Performance

크롬 개발자 도구의 lighthouse를 실행시켜 보면 아래와 같이 Serve static assets with an efficient cache policy라는 항목을 만날 수 있다

image


이 의미는 정적 파일들에 대해 캐시처리가 안되어 있을 경우 나타나는 것인데 이를 해결하기 위해 Cache-Control이라는 것을 사용해야 한다



Cache-Control

캐시를 적용하려면 브라우저가 서버로 특정 리소스를 요청할 때 서버에 해당 리소스의 캐시를 적용해 달라라는 요청을 해야 하는데 그것이 바로 Http Header에 들어가는 Cache-Control이다

하지만 클라이언트 쪽에서 Cache-Control 요청을 한다고 해서 바로 캐시를 적용할 수 있는 것은 아니다. 그 이유는 서버에서 별도로 설정을 해야 하기 때문이다


Cache-Control에 설정할 수 있는 옵션

  • no-cache : 캐시를 사용하기 전에 서버에서 사용 가능한 지 검사 후 사용 유무를 결정한다
  • no-store : 캐시를 사용 안함
  • public : 모든 환경에서 캐시 사용
  • private : 브라우저 환경에서만 캐시를 사용 (외부 캐시 서버에서는 사용 불가)
  • max-age : 캐시 유효시간 (초 단위)

사용 예시

  • cache-control: max-age=120
  • cache-control: public, max-age=600
  • cache-control: no-cache (max-age=0과 같은 의미이다 -> max-age가 0이어도 브라우저에서 캐시를 바로 버리는 것이 아니라 가지고 있다. 즉, 만료가 되었다고 해서 서버에서 바로 해당 리소스를 불러오는 것이 아니라 서버에서 사용 가능한지 검사 후 사용 유무에 따라 결정되기 때문이다)



그럼 서버는 어떻게 브라우저가 가지고 있는 캐시데이터가 서버에 있는 최신의 데이터가 같은지 판단할 수 있을까?

바로 etag로 판단할 수 있다 etag는 해당 리소스에 대한 hash값이라고 생각하면 된다

image

This post is licensed under CC BY 4.0 by the author.

폰트 최적화

SLASH 21 - 실무에서 바로 쓰는 Frontend Clean Code