Apache HTTP サーバ バージョン 2.2
Apache モジュール mod_cache
説明: | URI をキーにしたコンテンツのキャッシュ |
---|---|
ステータス: | Extension |
モジュール識別子: | cache_module |
ソースファイル: | mod_cache.c |
概要
Allow
や
Deny
ディレクティブを迂回する設定もできてしまいます。
ホスト名やアドレスや環境変数に基づいてクライアントからの
アクセスを制限したい場合は、キャッシュ機能を有効にすべきでは
ありません。mod_cache
はローカルのコンテンツやプロキシされた
コンテンツをキャッシュするために使われる RFC 2616 準拠の
HTTP コンテンツキャッシュを実装しています。mod_cache
の動作にはストレージを管理するモジュールが必要です。標準
Apache 配布には二つストレージ管理モジュールが含まれています:
mod_disk_cache
- ディスクを使用したストレージ管理機構を実装しています。
mod_mem_cache
- メモリを使用したストレージ管理機構を実装しています。
mod_mem_cache
は次の二つのモードのどちらかで動作する ように設定できます: オープンされているファイル記述子をキャッシュするモードか、 ヒープ上でのオブジェクトの自体をキャッシュをするモードです。mod_mem_cache
はローカルで生成されるコンテンツや、mod_proxy
がProxyPass
を使って設定されている ときの (つまりリバースプロキシ での) バックエンドサーバの コンテンツをキャッシュするのに使えます。
コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 アクセス保護のかけられているコンテンツはキャッシュされません。
詳細や解説、例については Caching Guide を参照して下さい。
関連モジュールとディレクティブ
関連モジュール | 関連ディレクティブ |
---|---|
サンプル設定
Sample httpd.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>
CacheDefaultExpire ディレクティブ
説明: | 期日が指定されていないときにドキュメントをキャッシュするデフォルトの期間 |
---|---|
構文: | CacheDefaultExpire seconds |
デフォルト: | CacheDefaultExpire 3600 (1時間) |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheDefaultExpire
ディレクティブは、ドキュメントに
有効期限 (expiry) や最終修正時刻 (last-modified) が指定されていない場合の
デフォルトの時間を指定します。CacheMaxExpire
ディレクティブで指定された値はこの設定を上書きしません。
CacheDefaultExpire 86400
CacheDisable ディレクティブ
説明: | 特定の URL をキャッシュしない |
---|---|
構文: | CacheDisable url-string |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheDisable
ディレクティブで
mod_cache
モジュールが url-string 以下の
URL をキャッシュしないようにします。
例
CacheDisable /local_files
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 fd
は mod_cache
に
mod_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/
CacheIgnoreCacheControl ディレクティブ
説明: | キャッシュされているコンテンツを返さないようにクライアントから リクエストされても無視する |
---|---|
構文: | CacheIgnoreCacheControl On|Off |
デフォルト: | CacheIgnoreCacheControl Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
Cache-Control: no-cache ヘッダや Pragma: no-store ヘッダのあるリクエストに
対しては、通常キャッシュを使いません。CacheIgnoreCacheControl
ディレクティブを使うと、この動作を上書きできます。
CacheIgnoreCacheControl
On とすると、
リクエストに no-cache という値があっても、キャッシュを使ってドキュメントを
返すようになります。認証を必要とするドキュメントは決して
キャッシュされません。
CacheIgnoreCacheControl On
警告
このディレクティブを使うと、ドキュメント取得時にキャッシュを使わないように クライアントがリクエストしているにもかかわらず、キャッシュを 使うようになります。その結果、 古いコンテンツが送られ続けることになってしまうかもしれません。参照
CacheIgnoreHeaders ディレクティブ
説明: | 指定された HTTP ヘッダをキャッシュに保存しない。 |
---|---|
構文: | CacheIgnoreHeaders header-string [header-string] ... |
デフォルト: | CacheIgnoreHeaders None |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
RFC 2616 によると、hop-by-hop HTTP ヘッダはキャッシュには保管されません。
以下のヘッダは hop-by-hop ヘッダに該当しますので、
CacheIgnoreHeaders
の設定に関係なくキャッシュには保管されません:
Connection
Keep-Alive
Proxy-Authenticate
Proxy-Authorization
TE
Trailers
Transfer-Encoding
Upgrade
CacheIgnoreHeaders
で
キャッシュに保管しない追加の HTTP ヘッダを指定します。
例えば、クッキーをキャッシュに保管しないようにした方がよい場合も
あるでしょう。
CacheIgnoreHeaders
の引数は、
キャッシュに保管しない HTTP ヘッダを空白区切りにしたリスト形式です。
キャッシュに保管しないヘッダが hop-by-hop ヘッダだけの場合
(RFC 2616 準拠の動作のとき) は、
CacheIgnoreHeaders
を None
に設定できます。
例 1
CacheIgnoreHeaders Set-Cookie
例 2
CacheIgnoreHeaders None
警告:
Expires
のような適切のキャッシュ管理のために必要な
ヘッダが CacheIgnoreHeaders
の設定により
保管されていないときは、mod_cache の動作は定義されていません。
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
CacheIgnoreQueryString ディレクティブ
説明: | Ignore query string when caching |
---|---|
構文: | CacheIgnoreQueryString On|Off |
デフォルト: | CacheIgnoreQueryString Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
互換性: | Available in Apache 2.2.6 and later |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
CacheIgnoreURLSessionIdentifiers ディレクティブ
説明: | Ignore defined session identifiers encoded in the URL when caching |
---|---|
構文: | CacheIgnoreURLSessionIdentifiers identifier [identifier] ... |
デフォルト: | CacheIgnoreURLSessionIdentifiers None |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
CacheLastModifiedFactor ディレクティブ
説明: | LastModified の日付に基づいて有効期限 (expiry) を計算するための重みを指定する |
---|---|
構文: | CacheLastModifiedFactor float |
デフォルト: | CacheLastModifiedFactor 0.1 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
ドキュメントに Last-Modified の日付が無いけれども有効期限 (expiry)
の日付があるというときに、有効期限を最終修正時刻からの経過時間として
計算するようにできます。有効期限を次の計算式に従って生成するのですが、
そのときに使われる factor を
CacheLastModifiedFactor
ディレクティブで指定します。
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
CacheLock ディレクティブ
説明: | Enable the thundering herd lock. |
---|---|
構文: | CacheLock on|off |
デフォルト: | CacheLock off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
互換性: | Available in Apache 2.2.15 and later |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
CacheLockMaxAge ディレクティブ
説明: | Set the maximum possible age of a cache lock. |
---|---|
構文: | CacheLockMaxAge integer |
デフォルト: | CacheLockMaxAge 5 |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
CacheLockPath ディレクティブ
説明: | Set the lock path directory. |
---|---|
構文: | CacheLockPath directory |
デフォルト: | CacheLockPath /tmp/mod_cache-lock |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
このディレクティブの解説文書は まだ翻訳されていません。英語版をご覧ください。
CacheMaxExpire ディレクティブ
説明: | ドキュメントをキャッシュする最大時間を秒数で表したもの |
---|---|
構文: | CacheMaxExpire seconds |
デフォルト: | CacheMaxExpire 86400 (一日) |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
CacheMaxExpire
ディレクティブは、
キャッシュする HTTP ドキュメントを、元のサーバに問い合わせないまま最大何秒
保持してもよいかを指定します。つまり、ドキュメントは最大でこの秒数間ぶん古く
なることになります。この最大値は、(訳注:レスポンス中で)ドキュメントと共に
ドキュメントの期日が提供されている場合でも適用されます。
CacheMaxExpire 604800
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 ディレクティブは、 "不注意による機密情報の漏洩や残留 (バックアップテープ等) を防ぐ" 目的で使われますが、このオプションを有効にすると、 機密情報を保持することになってしまいます。 ですので、ここで警告しておきます。参照
CacheStorePrivate ディレクティブ
説明: | private と指定されているレスポンスのキャッシュを試みる。 |
---|---|
構文: | CacheStorePrivate On|Off |
デフォルト: | CacheStorePrivate Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト |
ステータス: | Extension |
モジュール: | mod_cache |
通常 Cache-Control: private ヘッダのついているレスポンスは
キャッシュされません。CacheStorePrivate
ディレクティブでこの挙動を上書きできます。
CacheStorePrivate
On で private ヘッダのついている
リソースに対してもキャッシュを試みるようになります。
ただし認証の求められるリソースは 決して キャッシュされません。
CacheStorePrivate On