アプリケーションによるイメージ サービス キャッシュへのアクセスと使用
キャッシュされたイメージ サービスは、静的なイメージ サービスまたは動的なイメージ サービスのどちらとしても機能できます。一般的にキャッシュされたイメージ サービスは、そのタイル構造と静的な性質により、キャッシュされていない(動的なサービスとしてアクセスされる)サービスよりも高速です。キャッシュされたイメージ サービスにアクセスする場合、デフォルトの動作は静的で、サービス プロパティへのアクセスは制限されます。つまり、モザイク手法や送信圧縮の設定を変更することはできません。
イメージ サービスを表示できる Web アプリケーションはすべてキャッシュを使用しますが、タイルを取得して使用する方法はアプリケーションによって異なります。
ArcMap
ArcMap でキャッシュされたイメージ サービスを表示する場合、イメージ サービスの機能は制限されます。たとえば、モザイク手法や送信時の圧縮手法は変更できません。ただし、シンボルや拡張の変更や、ピクセルの個別属性表示の実行、データの検索、ソース データのダウンロードなどの処理は実行できます。
イメージ サービスを動的に処理して、モザイク手法などの機能を使用する必要がある場合は、レイヤのモードを変更できます。モードを変更するには、イメージ サービスのレイヤを右クリックして、[キャッシュ ビュー モードを有効化] をオフにします。イメージ サービスをキャッシュ サービスとして使用するには、このオプションをオンに戻します。
Web アプリケーション
ArcGIS Web API for JavaScript、Flex、および Silverlight で開発している場合、ArcGISTiledMapServiceLayer クラスを使用して、キャッシュされたイメージ サービスに接続できます。キャッシュされたイメージ サービスを使用すると、タイルは REST コールによってキャッシュ ディレクトリからイメージ サービスへ取得されます。タイル リクエストは「http://<イメージ サービス URL>/tile/<レベル>/<行>/<列>」形式で入力します。
次のような URL を参照している場合、アプリケーションは REST リクエストからタイルを取得しています。
http://gisserver.domain.com:6080/arcgis/rest/services/myService/ImageServer/tile/10/1723/3495
イメージ サービスに他の形式の URL で参照している場合、アプリケーションが効率の悪い方法でタイルを取得しているか、キャッシュが使用されていません。
Web アプリケーションでキャッシュ サービスを 1 つ表示しており、タイルが存在しない場所に画面移動した場合、アプリケーションは動的なイメージを表示しないため、何も表示されません。
イメージ サービスの表示が予想よりも遅い場合、イメージ サービスの URL を調べて、アプリケーションがタイルを取得していることを確認してください。これを実行する 1 つの方法として、Mozilla Firefox 4 でアプリケーションを開き、[Firefox] → [Web 開発] → [Web コンソール] の順にクリックします。コンソールが表示されたら、[ネットワーク] ボタンをクリックしてから、イメージ サービスを拡大または移動します。
キャッシュされるデータ ソースが Web アプリケーションで使用されているその他のデータと同じ投影法であることを確認します。投影法が異なる場合、ほとんどの Web アプリケーションはデータを投影変換できないため、データが表示されない可能性があります。また、キャッシュされるイメージ サービスのタイル スキーマが、Web アプリケーション内のその他のキャッシュ レイヤと同じであることも確認します。同じでない場合、表示されないレイヤがあります。
キャッシュされるイメージ サービスの表示パフォーマンスの改善
クライアントが 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 がそのリクエストを処理して、コンテンツが変更されている場合に完全な応答をブラウザに送信するということを意味します。
クライアントがタイルをローカルにキャッシュすることを許可するキャッシュされたイメージ サービスの場合、デフォルトは 12 時間(43200 秒)です。これは、リクエストが 12 時間以内に繰り返された場合、ブラウザがキャッシュ内の応答を使用するということを意味します。このデフォルト値は、ほとんどのアプリケーションで有効に機能します。
マップやデータが頻繁に変更されないキャッシュされたイメージ サービスの場合、ネットワーク トラフィックを最小限に抑えるために、デフォルト値を 30 日(2592000 秒)以上に増やすことをお勧めします。
cacheControlMaxAge プロパティをサービスに追加してデフォルト値を指定するには、以下の手順を実行します。
- Web ブラウザで ArcGIS Server Administrator Directory を開き、管理者権限を持つユーザでログインします。URL の形式は、http://gisserver.domain.com:6080/arcgis/admin です。
- [services] をクリックして、変更するイメージ サービスを [Services] リストから選択します。サービスがリストに表示されない場合は、[Root folder]の下のディレクトリに配置されている可能性があります。
- [Service - <サービス名> (<サービス タイプ>)] ページで下までスクロールし、[edit] をクリックします。
- [Service Properties] ダイアログ ボックスで、サービス JSON の "properties" セクションを見つけます。
- cacheControlMaxAge プロパティをそのセクションに追加して、そのプロパティの値(秒単位)を指定します。以下に例を示します。
"properties": { "cacheControlMaxAge": "2592000",
- [Save Edits] をクリックします。
- [Service - <サービス名> (<サービス タイプ>)] ページの[Properties] セクションで、cacheControlMaxAge プロパティと、それに指定した値が表示されていることを確認します。
Web アプリケーションでのキャッシュのオーバーレイ
前に説明したように、他のキャッシュ サービスとオーバーレイするイメージ サービス キャッシュを設計する場合は、キャッシュ設計で検討すべき重要な要素があります。ArcGIS API for JavaScript、Flex、Silverlight などを使用して構築された Web アプリケーションは、キャッシュをオーバーレイする際に座標系とタイル サイズを一致させる必要があります。できるだけ多くの縮尺を一致させることもお勧めします。このための最も簡単な方法は、両方のキャッシュでタイル スキーマを一致させてから、各キャッシュに適切な縮尺でタイルを作成するだけです。この方法により、座標系とタイル サイズを一致させ、2 つのキャッシュに同じ縮尺があることをソフトウェアに認識させることができます。
推奨するタイル スキーマは、ArcGIS Online/Google マップ/Bing Maps タイル スキーマです。
OGC WMTS
OGC(Open Geospatial Consortium)の WMTS(Web Map Tile Service)仕様は、キャッシュされた画像タイルを使用して Web でデジタル マップを提供するための国際仕様です。ArcGIS for Server を使用してキャッシュされたマップまたはイメージ サービスを作成すると、サービスとそのタイルは自動的に WMTS 仕様を使用してアクセスできるようになります。
キャッシュされたイメージ サービスに WMTS プロトコルを使用して接続する URL では、次のパターンを使用します。
http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer/WMTS