ヘルプ
|
サイトマップ
EZfactoryサイト内検索
HDMLでは、デッキのTTL属性を設定することによって、ブラウザ内でのコンテンツのキャッシュ内有効期間をコントロールすることが可能ですが、XHTMLではこのような属性がありません。
しかし、HTTPレスポンスヘッダや<meta>タグでキャッシュコントロールを行うことにより、HDMLでのTTLと同様の動作をさせることが可能です。
TTL値に関するブラウザ側の動作は、基本的にHDMLブラウザ搭載端末と同じで次の通りとなります。
1.
TTL < 0 のPageは、CacheがFullであれば破棄。Historyには残存。
2.
Cacheが空いていれば有効期限切れCacheとして残存。Historyにも残存。
3.
有効期限切れのPageであってもBack動作ではCacheを表示。
4.
有効期限切れのCacheと同一URLにLinkした場合は再取得。
5.
ページ更新 (Reload) 動作では、そのページのXHTMLソースのみが更新。
(貼り付けられている画像データ、リンクされているCSSデータについては更新されない。しかし、これらのファイルの有効期限が切れているかブラウザキャッシュに無い場合は更新される。)
1. <meta>タグよるコントロール
a.
<meta http-equiv="Cache-Control" content="no-cache" />
TTL < 0に設定される (有効期限切れ) 。
b.
<meta http-equiv="Cache-Control" content="max-age=xxxx" />
TTL=xxxx (秒) に設定される。
2. HTTPレスポンスヘッダの「Cache-Control:」フィールド
a.
「Cache-Control:no-cache」
TTL < 0と設定される (有効期限切れ)
b.
「Cache-Control:max-age=xxxx」
TTL = xxxx (秒) と設定される。
3. HTTPレスポンスヘッダの「Expires:」フィールド
a.
expiresのdate形式がRFC2616の規定内である場合、設定されるTTL値は以下の計算式の通りとなります。
TTL = expires - date - age
Expires:HTTPレスポンスヘッダの「Expires:」フィールドの値 (日付時刻)
date:HTTPレスポンスヘッダの「Date:」フィールドの値 (日付時刻)
age:HTTPレスポンスヘッダの「age:」フィールドの値 (経過時間 (秒数) )
(フィールドがない場合は、「0」として扱う)
b.
expiresのdate形式がRFC2616の規定以外の場合、TTL < 0 (有効期限切れ) と設定される。
4. 上記1、2、3の指定がない場合
a.
GETメソッドでリクエストされた場合
TTL = 30日間
b.
POSTメソッドでリクエストされた場合
TTL < 0 (有効期限切れ) と設定される。
age:HTTPレスポンスヘッダの「age:」フィールドの値 (経過時間 (秒数) )
5. 有効期限が競合した場合
上記1〜3の方法によるキャッシュの有効期限が競合した場合 (同時になされた場合) 、優先順位は次のようになります。
第1優先
<meta>タグによる指定
第2優先
HTTPレスポンスヘッダ「Cache-Control」フィールドによる指定
第3優先
HTTPレスポンスヘッダ「Expires」フィールドによる指定
HTTPリクエストヘッダの「Last-Modified:date」
ブラウザは、ページの有効期限切れを判断しキャッシュの制御を行いますが、ページが期限切れになったからといってすぐにキャッシュからページを削除はしません。
したがって、有効期限切れのページがキャッシュ上に存在しているケースが考えられます。その状態で期限切れのキャッシュのURLにアクセスすると、再度リクエストを行うこととなりますが、有効期限切れのページに対してHTTPレスポンスヘッダで「Last Modified:date」が設定されていた場合に限り、ブラウザはHTTPリクエストヘッダ「If-Modified-Since」を付加します。
「If-Modified-Since」で指定される「date」は「Last Modified:date」で設定された「date」です。
サーバは「If-Modified-Since:date」がリクエストヘッダに含まれていた場合、次のような動作をします。
1. 「If-Modified-Since:date」のdate以降にページの更新がない場合
レスポンスにStatus Code「304:Not Modified」を返して、ブラウザはキャッシュ上の有効期限切れのページに対し再度TTLの設定を行い有効期限の継続を行います。
2. 「If-Modified-Since:date」のdate以降にページの更新がある場合
通常のリクエストに対するレスポンスと同様に、StatusCode「200:OK」を返して、ブラウザは取得したページに対して再度TTLの設定を行います。