본문 바로가기
  • 실행력이 모든걸 결정한다
IT 상식

HTTP Cache 기초

by 김코더 김주역 2021. 12. 25.
반응형

1. HTTP Cache란?

- Cache는 데이터나 값을 미리 복사해 놓는 임시 장소 또는 중간 버퍼다.

- 애플리케이션상에서 이전에 사용했던 리소스들을 재사용함으로써 접근시간을 줄이고, 이에 따라 성능도 향상될 수 있다.

 

 

2. httpd.conf 파일

- httpd.conf 파일은 Apache의 메인 설정 파일이다.

- 변경 사항은 웹 서버를 재실행해야 잘 적용된다.

 

 

3. Cache 금지

- httpd.conf에 아래 내용을 추가하면 Cache를 사용하지 않는다.

- no-store : 클라이언트의 캐싱을 허용하지 않고, 매 요청 시 서버에서 리소스를 다운받아야 함

<ifModule mod_headers.c>
Header set Cache-Control "no-store"
</ifModule>

 

 

4. Cache 적용 (수명 설정)

- max-age : Cache의 수명을 초 단위로 설정하는 속성 - 예) 1년=31536000

<ifModule mod_headers.c>
Header set Cache-Control "max-age=31536000"
</ifModule>

 

- 문서를 가져올 때 네트워크를 사용하지 않고, 메모리나 디스크에서 가져온 모습이다. Cache를 적용하면 응답 속도도 매우 빨라진다.

 

그러나, 네트워크를 사용하지 않기 때문에 발생할 수 있는 문제도 존재한다.

사용자가 reload를 하더라도 웹 사이트의 변경사항이 사용자의 화면에 적용되지 않을 수도 있다.

이 때는 요청시마다 애플리케이션의 변경 사항을 확인할 수 있도록 max-age를 매우 작은 값으로 설정하거나 no-cache(max-age=0)로 설정하면 된다. 변경이 생길 경우에만 새로 다운로드를 수행한다면, 이는 확실히 효율적인 방식일 것이다.

애플리케이션의 변경 사항이 없다면 '304 Not Modified' 라는 상태 코드로 응답되고, 변경 사항이 잘 적용되었다면 "200 OK" 라는 상태 코드로 응답된다.

no-cache : cache를 사용하지 않겠다는 의미가 아닌, cache가 유효한지 항상 확인하겠다는 의미다.

<ifModule mod_headers.c>
Header set Cache-Control "no-cache"
</ifModule>

 

 

5. ETag

- 브라우저의 Cache에 저장되어 있는 구성 요소원본 서버의 구성 요소가 일치하는지 판단하는 방법이다.

- 브라우저는 ETag와 마지막 수정일 중에서 하나라도 불일치 한다면 새로운 구성 요소라고 판단한다.

※ ETag : 웹 페이지를 reload하기 전의 응답 Header의 ETag값, 웹 페이지를 reload한 후의 다음 요청 Header의 If-None-Match값

※ 마지막 수정일 : 웹 페이지를 reload하기 전의 응답 Header의 Last-Modified값, 웹 페이지를 reload한 후의 다음 요청 Header의 If-Modified-Since값

- ETag는 서버당 하나의 값을 가지기 때문에, 여러 서버로 운영되는 서비스의 경우에는 Cache의 효율을 떨어뜨릴 수 있다. 이 때에는 ETag를 제거할 수도 있다.

 

 

6. Caching Server

- 서버측에서 동작하는 Cache

- 대표적으로 Memcached가 있다.

 

반응형

'IT 상식' 카테고리의 다른 글

OSI 7Layer 설명 및 예시  (0) 2021.09.10
REST API란?  (0) 2021.05.03
Domain/DNS/Port/Internet(ip)  (0) 2021.03.27
메모리의 구조  (0) 2021.03.12
HTTP/HTTPS와 SSL이란?  (0) 2021.03.12

댓글