キャッシュされたイメージ サービスは、静的なイメージ サービスまたは動的なイメージ サービスのどちらとしても機能できます。一般的にキャッシュされたイメージ サービスは、そのタイル構造と静的な性質により、キャッシュされていない (動的なサービスとしてアクセスされる) サービスよりも高速です。キャッシュされたイメージ サービスにアクセスする場合、デフォルトの動作は静的で、サービス プロパティへのアクセスは制限されます。つまり、モザイク手法や送信圧縮の設定を変更することはできません。
イメージ サービスを表示できる Web アプリケーションはすべてキャッシュを使用しますが、タイルを取得して使用する方法はアプリケーションによって異なります。
ArcMap と ArcGIS Pro
キャッシュされたイメージ サービスを表示する場合、イメージ サービスの機能は制限されます。たとえば、モザイク手法や送信時の圧縮手法は変更できません。ただし、シンボルや拡張の変更や、ピクセルの個別属性表示の実行、データの検索、ソース データのダウンロードなどの処理は実行できます。
イメージ サービスを動的に処理して、モザイク手法などの機能を使用する必要がある場合は、レイヤーのモードを変更できます。モードを変更するには、イメージ サービスのレイヤーを右クリックして、[キャッシュ ビュー モードを有効化] をオフにします。イメージ サービスをキャッシュ サービスとして使用するには、このオプションをオンに戻します。
ArcGIS API for JavaScript アプリケーション
ArcGIS API for JavaScript で開発を行う場合、ArcGISTiledMapServiceLayer クラスを使用して、キャッシュされたイメージ サービスに接続します。キャッシュされたイメージ サービスを使用すると、タイルは REST コールによってキャッシュ ディレクトリからイメージ サービスへ取得されます。タイル リクエストの形式は、http://<image service URL>/tile/<level>/<row>/<column> のようになります。
次のような 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 時間 (43,200 秒) です。これは、リクエストが 12 時間以内に繰り返された場合、ブラウザーがキャッシュ内の応答を使用するということを意味します。このデフォルト値は、ほとんどのアプリケーションで有効に機能します。
マップやデータが頻繁に変更されないキャッシュされたイメージ サービスの場合は、ネットワーク トラフィックを最小限に抑えるために、デフォルト値を 30 日 (2,592,000 秒) まで大きくすることをお勧めします。
cacheControlMaxAge プロパティをサービスに追加してデフォルト値を指定するには、以下の手順を実行します。
- Web ブラウザーで ArcGIS Server Administrator Directory を開き、管理者権限を持つユーザーでログインします。URL の形式は https://gisserver.domain.com:6443/arcgis/admin です。
- [services] をクリックして、変更するイメージ サービスを [Services] リストから選択します。サービスがリストに表示されない場合は、[Root folder] の下のディレクトリに配置されている可能性があります。
- [Service - <サービス名> (<サービス タイプ>)] ページで下までスクロールし、[edit] をクリックします。
- [Service Properties] ダイアログ ボックスで、サービス JSON のプロパティ セクションを見つけます。
- cacheControlMaxAge プロパティをそのセクションに追加して、そのプロパティの値 (秒単位) を指定します。以下に例を示します。
"properties": { "cacheControlMaxAge": "2592000",
- [Save Edits] をクリックします。
- [Service - <サービス名> (<サービス タイプ>)] ページの[Properties] セクションで、cacheControlMaxAge プロパティと、それに指定した値が表示されていることを確認します。
Web アプリケーションでのキャッシュのオーバーレイ
前に説明したように、他のキャッシュ サービスとオーバーレイするイメージ サービス キャッシュを設計する場合は、キャッシュ設計で検討すべき重要な要素があります。ArcGIS API for JavaScript で構築された 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 では、次のパターンを使用します。
https://gisserver.domain.com:6443/arcgis/rest/services/folder/service/ImageServer/WMTS