mod_cache - Apache HTTP Server Version 2.2

Apache HTTP Server Version 2.2

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

#### Please note

This document refers to a legacy release (2.2) of Apache httpd. The active release (2.4) is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

# 아파치 모듈 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를 토대로 만든 키로 캐쉬에 저장하고 가져온다. 접근보호가 된 내용은 캐쉬하지않는다.

### 주제

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

### 지시어들

- Comments

## 관련된 모듈과 지시어

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

- `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`

## CacheIgnoreQueryString 지시어

설명: | Ignore query string when caching
문법: | `CacheIgnoreQueryString On|Off`
기본값: | `CacheIgnoreQueryString Off`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache
지원: | Available in Apache 2.2.6 and later

The documentation for this directive has not been translated yet. Please have a look at the English version.

## CacheIgnoreURLSessionIdentifiers 지시어

설명: | Ignore defined session identifiers encoded in the URL when caching
문법: | `CacheIgnoreURLSessionIdentifiers identifier [identifier] ...`
기본값: | `CacheIgnoreURLSessionIdentifiers None`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache

The documentation for this directive has not been translated yet. Please have a look at the English version.

## 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`

## CacheLock 지시어

설명: | Enable the thundering herd lock.
문법: | `CacheLock on|off`
기본값: | `CacheLock off`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache
지원: | Available in Apache 2.2.15 and later

The documentation for this directive has not been translated yet. Please have a look at the English version.

## CacheLockMaxAge 지시어

설명: | Set the maximum possible age of a cache lock.
문법: | `CacheLockMaxAge integer`
기본값: | `CacheLockMaxAge 5`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache

The documentation for this directive has not been translated yet. Please have a look at the English version.

## CacheLockPath 지시어

설명: | Set the lock path directory.
문법: | `CacheLockPath directory`
기본값: | `CacheLockPath /tmp/mod_cache-lock`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache

The documentation for this directive has not been translated yet. Please have a look at the English version.

## CacheMaxExpire 지시어

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

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

`CacheMaxExpire 604800`

## CacheStoreNoStore 지시어

설명: | Attempt to cache requests or responses that have been marked as no-store.
문법: | `CacheStoreNoStore On|Off`
기본값: | `CacheStoreNoStore Off`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache

The documentation for this directive has not been translated yet. Please have a look at the English version.

### 참고

- `CacheIgnoreCacheControl`
- `CacheStorePrivate`

## CacheStorePrivate 지시어

설명: | Attempt to cache responses that the server has marked as private
문법: | `CacheStorePrivate On|Off`
기본값: | `CacheStorePrivate Off`
사용장소: | 주서버설정, 가상호스트
상태: | Extension
모듈: | mod_cache

The documentation for this directive has not been translated yet. Please have a look at the English version.

### 참고

- `CacheIgnoreCacheControl`
- `CacheStoreNoStore`

가능한 언어: en | ja | ko

## Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.