クライアントが ArcGIS Server にリクエストを送信してマップ サービスを表示するときに、通常はサーバーからの応答がブラウザーによって一定期間キャッシュされ、再利用されます。この動作によって、ArcGIS Server はマップ サービスを最高品質で表示することができます。ただし、アプリケーションでのマップ サービスと関連データの使用方法に応じて、ブラウザーがキャッシュ内の応答を使用する期間を調整できます。これを行うには、cacheControlMaxAge プロパティをサービスの JSON (JavaScript Object Notation) に追加します。
cacheControlMaxAge プロパティの使用方法
ArcGIS Server マップ サービスの応答には、エンティティ タグ (ETag) ヘッダーとキャッシュ コントロール ヘッダーが含まれています。ETag ヘッダーの値は、応答の一意の識別子です。キャッシュ コントロール ヘッダーには、キャッシュから応答を再利用できる最大期間に関する情報をブラウザーに提供する max-age 値が含まれています。この値は、cacheControlMaxAge プロパティによって制御されます。
リクエストが繰り返された場合、キャッシュの最大期間の期限が切れていなければ、ブラウザーは、サーバーにリクエストを送信しないで、キャッシュされている応答を使用します。キャッシュの最大期間の期限が切れている場合、ブラウザーは、リクエストをサーバーに送信し、キャッシュ内の応答に対応する ETag 値を使用して IF-NONE-MATCH ヘッダーを設定する必要があります。ArcGIS Server は、リクエストを評価し、ETag 値を使用して、応答が変更されているかどうかを判定します。サーバーからの応答がブラウザー上のコピーと異なる場合、サーバーは新しい応答をブラウザーに送信します。応答がブラウザー上のコピーと同一である場合、サーバーは、キャッシュ内の応答を引き続き使用するようにブラウザーに警告します。
cacheControlMaxAge プロパティの値の定義
ArcGIS Server 管理者は、cacheControlMaxAge プロパティを定義して、ブラウザーがキャッシュされた応答を使用できる期間を指定できます。ArcGIS Server が完全な応答を送信する必要性を軽減することによって、ブラウザーのキャッシュを効率化し、アプリケーションを最適化し、ネットワーク帯域幅を節約することができます。
マップ サービスのデフォルト値は 0 です。これは、ブラウザーが必ずリクエストを再送し、ArcGIS Server がそのリクエストを処理して、コンテンツが変更されている場合に完全な応答をブラウザーに送信するということを意味します。このデフォルト値は、ほとんどのアプリケーションで有効に機能します。
データセットやシンボルが頻繁に変更されるマップ サービスの場合、5 分 (300 秒) などの値を指定することをお勧めします。アニメーションなどの時間に対応するデータを使用するアプリケーションでは、アニメーションをより滑らかに表示するために、この値を増やすことを検討してください。
cacheControlMaxAge プロパティをサービスに追加してデフォルト値を指定するには、以下の手順を実行します。
- Web ブラウザーで ArcGIS Server Administrator Directory を開き、管理者権限を持つユーザー名でログインします。
URL の形式は http://gisserver.domain.com:6080/arcgis/admin です。
- [services] をクリックして、変更するマップ サービスを [Services] リストから選択します。サービスがリストに表示されない場合は、root フォルダーの下のディレクトリに配置されている可能性があります。
- [Service - <サービス名> (<サービス タイプ>)] ページで下までスクロールし、[edit] をクリックします。
- [Service Properties] ダイアログ ボックスで、サービス JSON の "properties" セクションを見つけます。
- cacheControlMaxAge プロパティをそのセクションに追加して、そのプロパティの値 (秒単位) を指定します。例を以下に示します。
"properties": { "cacheControlMaxAge": "300",
- [編集の保存] をクリックします。
[Service - <サービス名> (<サービス タイプ>)] ページの[Properties] セクションで、cacheControlMaxAge プロパティと、それに指定した値が表示されていることを確認します。