<-
Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.2 > モジュール

Apache モジュール mod_cache

Available Languages:  en  |  ja  |  ko 

This translation may be out of date. Check the English version for recent changes.
説明:URI をキーにしたコンテンツのキャッシュ
ステータス:Extension
モジュール識別子:cache_module
ソースファイル:mod_cache.c

概要

使用方法については注意する必要があり、 AllowDeny ディレクティブを迂回する設定もできてしまいます。 ホスト名やアドレスや環境変数に基づいてクライアントからの アクセスを制限したい場合は、キャッシュ機能を有効にすべきでは ありません。

mod_cache はローカルのコンテンツやプロキシされた コンテンツをキャッシュするために使われる RFC 2616 準拠の HTTP コンテンツキャッシュを実装しています。mod_cache の動作にはストレージを管理するモジュールが必要です。標準 Apache 配布には二つストレージ管理モジュールが含まれています:

mod_disk_cache
ディスクを使用したストレージ管理機構を実装しています。
mod_mem_cache
メモリを使用したストレージ管理機構を実装しています。 mod_mem_cache は次の二つのモードのどちらかで動作する ように設定できます: オープンされているファイル記述子をキャッシュするモードか、 ヒープ上でのオブジェクトの自体をキャッシュをするモードです。 mod_mem_cache はローカルで生成されるコンテンツや、 mod_proxyProxyPass を使って設定されている ときの (つまりリバースプロキシ での) バックエンドサーバの コンテンツをキャッシュするのに使えます。

コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 アクセス保護のかけられているコンテンツはキャッシュされません。

詳細や解説、例については Caching Guide を参照して下さい。

ディレクティブ

トピック

参照

top

関連モジュールとディレクティブ

top

サンプル設定

Sample apache2.conf

#
# Sample Cache Configuration
#
LoadModule cache_module modules/mod_cache.so

<IfModule mod_cache.c>
#LoadModule disk_cache_module modules/mod_disk_cache.so
# If you want to use mod_disk_cache instead of mod_mem_cache,
# uncomment the line above and comment out the LoadModule line below.
<IfModule mod_disk_cache.c>
CacheRoot c:/cacheroot
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>

# When acting as a proxy, don't cache the list of security updates
CacheDisable http://security.update.server/update-list/
</IfModule>

top

CacheDefaultExpire ディレクティブ

説明:期日が指定されていないときにドキュメントをキャッシュするデフォルトの期間
構文:CacheDefaultExpire seconds
デフォルト:CacheDefaultExpire 3600 (1時間)
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

CacheDefaultExpire ディレクティブは、ドキュメントに 有効期限 (expiry) や最終修正時刻 (last-modified) が指定されていない場合の デフォルトの時間を指定します。CacheMaxExpire ディレクティブで指定された値はこの設定を上書きしません

CacheDefaultExpire 86400

top

CacheDisable ディレクティブ

説明:特定の URL をキャッシュしない
構文:CacheDisable url-string
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

CacheDisable ディレクティブで mod_cache モジュールが url-string 以下の URL をキャッシュしないようにします。

CacheDisable /local_files

top

CacheEnable ディレクティブ

説明:指定したストレージ管理方式を使ってのキャッシュを有効にする
構文:CacheEnable cache_type url-string
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

CacheEnable ディレクティブで mod_cache モジュールが url-string 以下の URL をキャッシュするようにします。 キャッシュストレージ管理方式は cache_type 引数で指定します。 cache_type mem で、 mod_mem_cache で実装されているメモリを使ったストレージ 管理方式を使うように mod_cache に指示します。 cache_type disk で、 mod_disk_cache で実装されているディスクを使ったストレージ 管理を使うように mod_cache に指示します。 cache_type fdmod_cachemod_mem_cache により実装されているファイル記述子の キャッシュを使うように指示します。

(下の例のように) CacheEnable ディレクティブの URL 空間が重複しているときは、該当するストレージ方式を順に試して、 実際にリクエストの処理ができると、その方式で処理します。 ストレージ管理方式が実行される順番は設定ファイル中の CacheEnable の順番により決定されます。

CacheEnable mem /manual
CacheEnable fd /images
CacheEnable disk /

フォワードプロクシサーバとして動作させる場合は、 url-string でリモートサイトとプロクシするプロトコルを 指定して、何に対してキャッシュを有効にするか指定することもできます。

# Cache proxied url's
CacheEnable disk /

# Cache FTP-proxied url's
CacheEnable disk ftp://

# Cache content from www.apache.org
CacheEnable disk http://www.apache.org/

top

CacheIgnoreCacheControl ディレクティブ

説明:キャッシュされているコンテンツを返さないようにクライアントから リクエストされても無視する
構文:CacheIgnoreCacheControl On|Off
デフォルト:CacheIgnoreCacheControl Off
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

Cache-Control: no-cache ヘッダや Pragma: no-store ヘッダのあるリクエストに 対しては、通常キャッシュを使いません。CacheIgnoreCacheControl ディレクティブを使うと、この動作を上書きできます。 CacheIgnoreCacheControl On とすると、 リクエストに no-cache という値があっても、キャッシュを使ってドキュメントを 返すようになります。認証を必要とするドキュメントは決して キャッシュされません。

CacheIgnoreCacheControl On

警告

このディレクティブを使うと、ドキュメント取得時にキャッシュを使わないように クライアントがリクエストしているにもかかわらず、キャッシュを 使うようになります。その結果、 古いコンテンツが送られ続けることになってしまうかもしれません。

参照

top

CacheIgnoreHeaders ディレクティブ

説明:指定された HTTP ヘッダをキャッシュに保存しない。
構文:CacheIgnoreHeaders header-string [header-string] ...
デフォルト:CacheIgnoreHeaders None
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

RFC 2616 によると、hop-by-hop HTTP ヘッダはキャッシュには保管されません。 以下のヘッダは hop-by-hop ヘッダに該当しますので、 CacheIgnoreHeaders の設定に関係なくキャッシュには保管されません:

CacheIgnoreHeaders で キャッシュに保管しない追加の HTTP ヘッダを指定します。 例えば、クッキーをキャッシュに保管しないようにした方がよい場合も あるでしょう。

CacheIgnoreHeaders の引数は、 キャッシュに保管しない HTTP ヘッダを空白区切りにしたリスト形式です。 キャッシュに保管しないヘッダが hop-by-hop ヘッダだけの場合 (RFC 2616 準拠の動作のとき) は、 CacheIgnoreHeadersNone に設定できます。

例 1

CacheIgnoreHeaders Set-Cookie

例 2

CacheIgnoreHeaders None

警告:

Expires のような適切のキャッシュ管理のために必要な ヘッダが CacheIgnoreHeaders の設定により 保管されていないときは、mod_cache の動作は定義されていません。
top

CacheIgnoreNoLastMod ディレクティブ

説明:応答に Last Modified が無くても気にしないようにする
構文:CacheIgnoreNoLastMod On|Off
デフォルト:CacheIgnoreNoLastMod Off
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

通常、Last-Modified による最終修正時刻の無いドキュメントはキャッシュ されません。(例えば mod_include による処理のときなどに) Last-Modified 時刻が消去されたり、そもそも最初から提供されていない 状況があります。CacheIgnoreNoLastMod ディレクティブを使うと、Last-Modified 日時が指定されていない ドキュメントでもキャッシュするように指定できます。ドキュメントに 最終修正時刻 (Last-Modified) 有効期限 (expiry) がない場合は、有効期限の 生成に CacheDefaultExpire が使われます。

CacheIgnoreNoLastMod On

top

CacheLastModifiedFactor ディレクティブ

説明:LastModified の日付に基づいて有効期限 (expiry) を計算するための重みを指定する
構文:CacheLastModifiedFactor float
デフォルト:CacheLastModifiedFactor 0.1
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

ドキュメントに Last-Modified の日付が無いけれども有効期限 (expiry) の日付があるというときに、有効期限を最終修正時刻からの経過時間として 計算するようにできます。有効期限を次の計算式に従って生成するのですが、 そのときに使われる factorCacheLastModifiedFactor ディレクティブで指定します。

expiry-period = time-since-last-modified-date * factor expiry-date = current-date + expiry-period

例えば、ドキュメントが 10 時間前に最後に修正されていて、 factor が 0.1 であれば、期日は 10*0.1 = 1 時間に 設定されます。現在時刻が 3:00pm であれば、計算された期日は 3:00pm + 1hour = 4:00pm になります。

期日が CacheMaxExpire で設定されている値 より大きくなってしまっている場合は、CacheMaxExpire の設定値が優先されます。

CacheLastModifiedFactor 0.5

top

CacheMaxExpire ディレクティブ

説明:ドキュメントをキャッシュする最大時間を秒数で表したもの
構文:CacheMaxExpire seconds
デフォルト:CacheMaxExpire 86400 (一日)
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

CacheMaxExpire ディレクティブは、 キャッシュする HTTP ドキュメントを、元のサーバに問い合わせないまま最大何秒 保持してもよいかを指定します。つまり、ドキュメントは最大でこの秒数間ぶん古く なることになります。この最大値は、(訳注:レスポンス中で)ドキュメントと共に ドキュメントの期日が提供されている場合でも適用されます。

CacheMaxExpire 604800

top

CacheStoreNoStore ディレクティブ

説明:no-store と指定されているレスポンスのキャッシュを試みる。
構文:CacheStoreNoStore On|Off
デフォルト:CacheStoreNoStore Off
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

通常 Cache-Control: no-store ヘッダのついているレスポンスは キャッシュされません。CacheStoreNoCache ディレクティブでこの挙動を上書きできます。 CacheStoreNoCache On で no-store ヘッダのついている リソースに対してもキャッシュを試みるようになります。 ただし認証の求められるリソースは 決して キャッシュされません。

CacheStoreNoStore On

警告:

RFC 2616 に記載されているように no-store ディレクティブは、 "不注意による機密情報の漏洩や残留 (バックアップテープ等) を防ぐ" 目的で使われますが、このオプションを有効にすると、 機密情報を保持することになってしまいます。 ですので、ここで警告しておきます。

参照

top

CacheStorePrivate ディレクティブ

説明:private と指定されているレスポンスのキャッシュを試みる。
構文:CacheStorePrivate On|Off
デフォルト:CacheStorePrivate Off
コンテキスト:サーバ設定ファイル, バーチャルホスト
ステータス:Extension
モジュール:mod_cache

通常 Cache-Control: private ヘッダのついているレスポンスは キャッシュされません。CacheStorePrivate ディレクティブでこの挙動を上書きできます。 CacheStorePrivate On で private ヘッダのついている リソースに対してもキャッシュを試みるようになります。 ただし認証の求められるリソースは 決して キャッシュされません。

CacheStorePrivate On

警告:

上流サーバがキャッシュしないように指定してきても、 それを無視してキャッシュするようになります。 望ましい挙動になるのは、本当に 'private' なキャッシュについてのみでしょう。

参照

Available Languages:  en  |  ja  |  ko