Apache HTTP サーバ バージョン 2.0
Apache モジュール mod_expires
説明: | ユーザの指定した基準に基づいた Expires と
Cache-Control HTTP ヘッダの生成 |
---|---|
ステータス: | Extension |
モジュール識別子: | expires_module |
ソースファイル: | mod_expires.c |
概要
このモジュールはサーバ応答の Expires
HTTP ヘッダ
と Cache-Control
ヘッダの max-age
ディレクティブの
設定を制御します。元のファイルが作成された時刻または
クライアントのアクセス時刻のどちらかに基づいて期限切れ日を
設定することができます。
これらのヘッダはクライアントに文書の 有効性と継続性を指示します。文書がキャッシュされた場合には、 指定時刻に達するまでは、元の場所から取得する代わりに キャッシュされているものを使うことができます。その後は、 キャッシュにあるコピーは期限切れ (expired) で無効であるとされ、 元の場所から新しいものを取得する必要があります。
max-age
以外 (RFC
2616 section 14.9 参照) の Cache-Control
のディレクティブを
操作するには Header
ディレクティブを
使うことができます。
代替期間指定構文
ExpiresDefault
ディレクティブと
ExpiresByType
ディレクティブは
以下のより読み易い構文を使って定義することができます:
ExpiresDefault "<base> [plus] {<num>
<type>}*"
ExpiresByType type/encoding "<base> [plus]
{<num> <type>}*"
<base> は以下のどれかです:
access
now
('access
' と等価)modification
plus
キーワードは省略可能です。<num>
は (atoi()
が受け付ける) 整数値、
<type> は以下のどれかです:
years
months
weeks
days
hours
minutes
seconds
例えば、以下のディレクティブはどれもデフォルトで文書がアクセスの 1 ヶ月後に 期限が切れるようにするために使えます:
ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"
期限切れ時刻はいくつか '<num> <type>' 節を追加することでより細かく 制御することができます:
ExpiresByType text/html "access plus 1 month 15
days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3
minutes"
修正時刻に基づいた設定を使用している場合、Expires ヘッダは ディスクのファイル以外のコンテンツには追加されないことに注意 してください。そのようなコンテンツには修正時刻は存在しないからです。
ExpiresActive ディレクティブ
説明: | Expires ヘッダの生成を有効にする |
---|---|
構文: | ExpiresActive On|Off |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Extension |
モジュール: | mod_expires |
このディレクティブは対応するドキュメントの領域で
Expires
と Cache-Control
ヘッダを
有効にするか無効にするかを決めます。
(例えば、.htaccess
ファイルではそのディレクトリの
文書のみに適用されるということです。) Off
に
設定された場合は対応領域でそれらのヘッダは
生成されません (.htaccess
がサーバ設定ファイルの設定を
上書きする、というような下位レベルでの上書きがされていなければ)。
On
に設定されていれば、ヘッダは ExpiresByType
ディレクティブと
ExpiresDefault
ディレクティブ
の基準に従って文書にヘッダを追加します (各ディレクティブ参照)。
このディレクティブは Expires
と
Cache-Control
ヘッダの存在を
保証するわけではないことに注意してください。基準が満たされて
いない場合はヘッダは追加されず、結果としてこのディレクティブが
指定されていなかったかのようにさえ見えることになります。
ExpiresByType ディレクティブ
説明: | MIME タイプによって設定される Expires ヘッダの値 |
---|---|
構文: | ExpiresByType MIME-type
<code>seconds |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Extension |
モジュール: | mod_expires |
このディレクティブは指定されたタイプのドキュメント
(例えば text/html
)
に対して生成される Expires
ヘッダと Cache-Control
ヘッダの max-age
ディレクティブの値を定義します。
二つ目の引数は期限切れの日時を生成するための基準時刻に追加される
秒数を設定します。Cache-Control:
max-age
は期限切れの時刻からリクエスト時刻を引いたものを秒で
表すことで生成されます。
基準時刻はファイルの最終修正時刻か、クライアントのドキュメントへの
アクセス時刻です。どちらを使うべきかは <code>
によって指定します。M
は基準時刻として
ファイルの最終修正時刻をという意味で、A
はクライアントの
アクセス時刻を使うという意味になります。
効果には微妙な違いがあります。M
が使用された場合は、
すべてのキャッシュにある現在のドキュメントキャッシュは同時に期限が
切れます。これは同じ URL に毎週常に置かれる報せのようなものには
非常に有効です。A
が使用された場合は、期限切れの
時間は各クライアントよって異なります。これはあまり変更されない
画像ファイルなど、特に関連するドキュメント群がすべて同じ画像を
参照するとき (すなわち画像が比較的短い期間内に繰り返し
アクセスされるとき) に有効です。
例:
# enable expirations
ExpiresActive On
# expire GIF images after a month in the client's cache
ExpiresByType image/gif A2592000
# HTML documents are good for a week from the
# time they were changed
ExpiresByType text/html M604800
このディレクティブは ExpiresActive On
が指定されている
ときのみ有効であることに注意してください。これは、
指定された MIME タイプに対してのみ ExpiresDefault
ディレクティブで
設定された期限切れ期日を上書きします。
この文書の前の方で説明されている代替構文を 使って期限切れ期日の計算方法を指定することもできます。
ExpiresDefault ディレクティブ
説明: | 期限切れ期日を計算するデフォルトアルゴリズム |
---|---|
構文: | ExpiresDefault <code>seconds |
コンテキスト: | サーバ設定ファイル, バーチャルホスト, ディレクトリ, .htaccess |
上書き: | Indexes |
ステータス: | Extension |
モジュール: | mod_expires |
このディレクティブは対応する範囲のすべてのドキュメントに対して
デフォルトの期限切れ期日の計算アルゴリズムを設定します。ExpiresByType
ディレクティブによって
タイプ毎に上書きすることができます。引数の構文はそのディレクティブの
説明を参照してください。また、代替構文も
参照してください。