질문
웹 애플리케이션에서 HTTP 캐싱의 중요성에 대해 설명하고, Cache-Control, 그리고 Last-Modified 헤더의 역할과 차이점을 설명해주세요. 브라우저 캐시를 효과적으로 활용하여 웹 성능을 최적화하는 전략과, 캐싱으로 인해 발생할 수 있는 잠재적인 문제들을 해결하는 방법에 대해 얘기해주세요
1. HTTP 캐싱
1-1. 의미
: 웹 브라우저가 서버로부터 다운로드한 리소스들을 저장해뒀다가 다시 사용하는 걸 가리킴.
1-2. 프론트엔드 개발자가 HTTP 캐싱에 대해서 왜 알아야 하는가?
- 사용자 경험 : 웹 페이지 로딩 속도에 영향을 끼치기 때문에 알아야 함. 브라우저는 이미 다운로드했던 리소스를 재사용하면 서버에 요청하고 응답받는 비용을 줄일 수 있어 더 빠르게 페이지를 로드할 수 있어 사용자에게 더 나은 사용자 경험을 제공할 수 있음
- 서버 부하 감소 : 서버는 여러가지의 요청을 받아서 처리를 하기 때문에 전체적으로 봤을때 불필요한 요청을 줄여서 서버의 과부하를 줄이는게 각자 요청을 할때 빠른 응답을 받을 수있는 가능성을 높여줄 수 있음
2. Cache-Control
: 캐싱을 할건지 말건지?
- max-age : 리소스가 fresh 상태로 유지되는 시간(초)을 지정
- public : 브라우저, 프록시, CDN에 캐시 저장
- private : 브라우저에만 캐시
- no-cache : 캐시 저장은 함. 요청마다 해당 리소스가 유효한지 물어보고 변경사항이 없다고 하면 캐시를 활용 아니라면 새로운 리소스를 받음
- no-store : 완전히 저장을 안함.
3. Last-modified
: 리소스의 마지막 수정 시간