Apache HTTP Server Version 2.2

Apache > HTTP Server > Documentation > Version 2.2 > 모듈

# 아파치 모듈 mod_cache

가능한 언어: en | ja | ko

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

설명: | URI를 키로 사용하여 내용을 캐쉬한다.
상태: | Experimental
모듈명: | cache_module
소스파일: | mod_cache.c

### 요약

이 모듈은 실험적인 상태이다. 문서는 아직 작업중이다...

`mod_cache`는 같은 컴퓨터에 있는 내용이나 프록시된 내용을 캐쉬할 수 있는 RFC 2616 호환 HTTP 내용캐쉬를 구현한다. `mod_cache`를 사용하려면 저장관리모듈(storage management module)이 필요하다. 기본 아파치 배포본에는 두가지 저장관리모듈이 있다:

`mod_disk_cache`
  는 디스크기반 저장관리자를 구현한다.
`mod_mem_cache`
  는 메모리기반 저장관리자를 구현한다. `mod_mem_cache`는 파일기술자를 캐쉬하거나 힙(heap) 공간에 객체를 캐쉬하는 두가지 방식중 한가지 방법으로 동작하도록 설정할 수 있다. `mod_mem_cache`는 자신이 생성한 내용을 캐쉬하거나, (역프록시(reverse proxy)로 알려진) `ProxyPass`를 사용하여 `mod_proxy`를 위해 뒷단 서버내용을 캐쉬할 수 있다.

내용을 URI를 토대로 만든 키로 캐쉬에 저장하고 가져온다. 접근보호가 된 내용은 캐쉬하지않는다.

### 지시어들

### 주제

- 관련된 모듈과 지시어
- 설정예

## 관련된 모듈과 지시어

관련된 모듈 | 관련된 지시어
--- | ---

- `mod_disk_cache`
- `mod_mem_cache`

- `CacheRoot`
- `CacheSize`
- `CacheGcInterval`
- `CacheDirLevels`
- `CacheDirLength`
- `CacheExpiryCheck`
- `CacheMinFileSize`
- `CacheMaxFileSize`
- `CacheTimeMargin`
- `CacheGcDaily`
- `CacheGcUnused`
- `CacheGcClean`
- `CacheGcMemUsage`
- `MCacheSize`
- `MCacheMaxObjectCount`
- `MCacheMinObjectSize`
- `MCacheMaxObjectSize`
- `MCacheRemovalAlgorithm`
- `MCacheMaxStreamingBuffer`

## 설정예

### Sample httpd.conf

`#
# 예제 캐쉬 설정
#
LoadModule cache_module modules/mod_cache.so
<IfModule mod_cache.c>
#LoadModule disk_cache_module modules/mod_disk_cache.so
<IfModule mod_disk_cache.c>
CacheRoot c:/cacheroot
CacheSize 256
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
</IfModule>
LoadModule mem_cache_module modules/mod_mem_cache.so
<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>
</IfModule>`

## CacheDefaultExpire 지시어

설명: | 만기시간을 지정하지않은 문서를 캐쉬할 기본 기간.
문법: | `CacheDefaultExpire seconds`
기본값: | `CacheDefaultExpire 3600 (one hour)`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

`CacheDefaultExpire` 지시어는 문서의 만기시간과 최근수정시간이 없는 경우 문서를 캐쉬할 초단위 기본 시간을 지정한다. `CacheMaxExpire`로 지정한 값이 이 설정을 무시하지 않는다.

`CacheDefaultExpire 86400`

## CacheDisable 지시어

설명: | 특정 URL을 캐쉬하지 않는다
문법: | `CacheDisable url-string`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

`CacheDisable` 지시어를 사용하면 `mod_cache`가 url-string 이하의 url들을 캐쉬하지 않는다.

### 예제

`CacheDisable /local_files`

## CacheEnable 지시어

설명: | 지정한 저장관리자를 사용하여 지정한 URL을 캐쉬한다
문법: | `CacheEnable cache_type url-string`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

`CacheEnable` 지시어를 사용하면 `mod_cache`가 url-string 이하 url들을 캐쉬한다. 캐쉬 저장관리자는 cache_type 아규먼트로 지정한다. cache_type `mem`은 `mod_mem_cache`가 구현하는 메모리기반 저장관리자를 사용한다. cache_type `disk`는 `mod_disk_cache`가 구현하는 디스크기반 저장관리자를 사용한다. cache_type `fd`는 `mod_mem_cache`가 구현하는 파일기술자 캐쉬를 사용한다.

(아래 예와 같이) URL 공간이 다른 `CacheEnable` 지시어와 겹치면 실제로 한 저장관리자가 요청을 처리할때까지 두 저장관리자를 모두 실행한다. 설정파일에서 `CacheEnable` 지시어의 순서대로 저장관리자가 실행된다.

`CacheEnable mem /manual
CacheEnable fd /images
CacheEnable disk /
`

## CacheIgnoreCacheControl 지시어

설명: | 클라이언트가 캐쉬하지않는 내용을 요청함을 무시한다.
문법: | `CacheIgnoreCacheControl On|Off`
기본값: | `CacheIgnoreCacheControl Off`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

보통 no-cache나 no-store 헤더값을 가진 문서는 캐쉬에 저장하지않는다. `CacheIgnoreCacheControl` 지시어는 이런 행동을 변경한다. `CacheIgnoreCacheControl` On을 사용하면 서버는 문서에 no-cache나 no-store 헤더값이 있어도 문서를 캐쉬한다. 인증이 필요한 문서는 절대로 캐쉬하지 않는다.

`CacheIgnoreCacheControl On`

## CacheIgnoreHeaders 지시어

설명: | 캐쉬에 지정한 HTTP 헤더(들)를 저장하지 않는다
문법: | `CacheIgnoreHeaders header-string [header-string] ...`
기본값: | `CacheIgnoreHeaders None`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

RFC 2616에 따르면 홉간(hop-by-hop) HTTP 헤더는 캐쉬에 저장하지 않는다. 홉간 HTTP 헤더에는 다음과 같은 것이 있으며, `CacheIgnoreHeaders` 설정과 관계없이 어떤 경우에도 캐쉬에 저장되지 않는다.

- `Connection`
- `Keep-Alive`
- `Proxy-Authenticate`
- `Proxy-Authorization`
- `TE`
- `Trailers`
- `Transfer-Encoding`
- `Upgrade`

`CacheIgnoreHeaders`는 캐쉬에 저장하면 안되는 HTTP 헤더를 추가로 지정한다. 예를 들어, 쿠키(cookie)를 캐쉬에 저장하면 안되는 경우가 있다.

`CacheIgnoreHeaders`는 캐쉬에 저장하지 않을 HTTP 헤더들을 공백으로 구분한 목록을 받는다. (RFC 2616에 따라) 캐쉬에 홉간 헤더만 저장하지 않으려면, `CacheIgnoreHeaders`를 `None`으로 설정한다.

### 예제 1

`CacheIgnoreHeaders Set-Cookie`

### 예제 2

`CacheIgnoreHeaders None`

### 경고:

`CacheIgnoreHeaders` 설정을 사용하여 `Expires` 같이 캐쉬 관리에 필요한 헤더를 저장하지 않으면, mod_cache는 비정상적으로 동작한다.

## CacheIgnoreNoLastMod 지시어

설명: | 응답에 Last Modified 헤더가 없다는 사실을 무시한다.
문법: | `CacheIgnoreNoLastMod On|Off`
기본값: | `CacheIgnoreNoLastMod Off`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

보통 최근수정일이 없는 문서는 캐쉬하지 않는다. 어떤 경우 최근수정일을 (예를 들어 `mod_include` 처리중에) 빼거나 처음부터 없었을 수가 있다. `CacheIgnoreNoLastMod` 지시어는 최근수정일이 없는 문서도 반드시 캐쉬하도록 만든다. 문서에 최근수정일과 만기시간이 없는 경우 `CacheDefaultExpire` 지시어로 지정한 값을 만기시간으로 사용한다.

`CacheIgnoreNoLastMod On`

## CacheLastModifiedFactor 지시어

설명: | LastModified 시간으로 만기시간을 계산하는데 사용하는 계수.
문법: | `CacheLastModifiedFactor float`
기본값: | `CacheLastModifiedFactor 0.1`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

문서에 만기시간은 없지만 최근수정일이 있는 경우 최근수정일 이후 지난 시간으로 만기시간을 계산한다. `CacheLastModifiedFactor` 지시어는 만기시간을 계산하는 다음 공식에서 사용할 factor를 지정한다: `expiry-period = time-since-last-modified-date * factor expiry-date = current-date + expiry-period` 예를 들어, 문서가 10 시간 전에 마지막으로 수정되었고 factor가 0.1이라면 만기기간은 10*01 = 1 시간이 된다. 현재 시간이 3:00pm이라면 만기시간은 3:00pm + 1시간 = 4:00pm이다. 만기기간이 `CacheMaxExpire` 보다 길다면 `CacheMaxExpire`를 사용한다.

`CacheLastModifiedFactor 0.5`

## CacheMaxExpire 지시어

설명: | 문서를 캐쉬하는 초단위 최대시간
문법: | `CacheMaxExpire seconds`
기본값: | `CacheMaxExpire 86400 (하루)`
사용장소: | 주서버설정, 가상호스트
상태: | Experimental
모듈: | mod_cache

`CacheMaxExpire` 지시어는 실제 서버를 검사하지않고 캐쉬가능한 HTTP 문서를 유지할 수 있는 초단위 최대시간을 지정한다. 즉, 문서는 최대한 이 설정값만큼 오래되었다. 문서가 만기시간을 지정하여도 이 최대값을 지킨다.

`CacheMaxExpire 604800`

가능한 언어: en | ja | ko