マップ サービスにタイル スキーマを定義すると、そのサービスは即座にキャッシュを使用します。 マップ サービスまたはイメージ サービスを表示できる ArcGIS アプリケーションはすべてキャッシュを使用しますが、タイルを取得して使用する方法はアプリケーションによって異なります。
Web アプリ
キャッシュされたマップ サービスまたはイメージ サービスを、ベースマップまたは操作レイヤーとして Web マップで使用するために追加できます。
キャッシュされたマップ サービスを Web マップに接続するには、ArcGIS タイル マップ サービス レイヤー オブジェクトを使用できます。
キャッシュされたイメージ サービスを Web マップに接続するには、ArcGIS タイル イメージ サービス レイヤー オブジェクトを使用できます。
タイルは、 https://<map service URL>/tile/<level>/<row>/<column> マップ タイル リクエストを使用し、マップ サービスへの REST コールによってキャッシュ ディレクトリから取得されます。
Web アプリのトラブルシューティング
マップのパフォーマンスが予想よりも遅い場合、マップ イメージの URL を調べて、アプリがキャッシュされたタイルを取得していることを確認できます。
アプリがキャッシュされたタイルを取得していることを確認するには、次の手順を実行します。
- ブラウザーでアプリケーションの Web 開発者ツールを開きます。
- コンソールで [ネットワーク] タブをクリックします。
- Web マップをズームしたり画面移動したりします。
コンソールに次のような URL が表示された場合、アプリは REST リクエストからのキャッシュされたタイルを正常に使用しています。
https://gisserver.domain.com:6443/arcgis/rest/services/myService/MapServer/tile/10/1723/3495.jpg
exportMap や exportImage などの別の URL 形式が表示された場合、アプリはキャッシュを使用していません。
ArcGIS Pro
キャッシュされたマップ サービスを ArcGIS Pro に追加するには、「ArcGIS Pro のマップまたはシーンへのレイヤーの追加」をご参照ください。
指定された投影法でキャッシュの縮尺レベルと一致する縮尺でタイルがリクエストされた場合、マップ サービスは直接タイルを返します。 ただし、リクエストがキャッシュ内の縮尺または投影法と正確に一致しないことがよくあります。 このような場合、次に近い縮尺のタイルがリクエストされ、リクエストされた縮尺に合わせてリサンプリングされます。 リサンプリングはタイルを動的に生成するよりも高速ですが、処理の結果、元のタイルとは見た目が異なる画像が生成されます。
注意:
リサンプリング処理の後に、キャッシュされているマップ ラベルを特定の縮尺で読み取ることが難しくなる場合があります。
見やすさを確認するには、キャッシュが作成された縮尺に近い縮尺でマップを表示することをお勧めします。
ArcGIS Pro は、セッション中のマップおよびイメージ レイヤーのパフォーマンスを向上させるため、マップおよびイメージ サービスのコンテンツをローカルにキャッシュします。 ArcGIS Pro でのキャッシュの仕組みの詳細については、「キャッシュ オプションの設定」をご参照ください。
キャッシュされたデータは、ArcGIS Pro のラスター データセットとしてもアクセスできます。 ラスターとしてアクセスされるキャッシュにはクエリを実行できませんが、マップ サービスに依存しないため、サーバーから切断された状態でもタイルを表示することができます。
クライアントによるローカル キャッシュの有効化
キャッシュされたマップ サービスまたはイメージ サービスを表示する際、ArcGIS クライアントがタイルをローカルに格納できるようにすることで、ユーザーがすでに表示したエリアを再び参照したときにタイルを再び取得せずに済むようにします。
注意:
ユーザーがキャッシュの更新内容を確認するには、ローカル キャッシュをクリアする必要がある場合があります。
キャッシュを頻繁に更新する場合、クライアントがタイルをローカルにキャッシュする機能を無効にすることができます。 そうすることで、ユーザーのローカル キャッシュに格納されている古い情報ではなく、常に最新の情報をユーザーに提供できます。
ローカル キャッシュが有効になっている場合、ユーザーはタイル キャッシュをローカルに格納するかどうかを選択できます。 ユーザーは、ローカル キャッシュを継続的に構築する、アプリケーション セッションごとに新しいローカル キャッシュを構築する、またはローカル キャッシュを構築しないことを選択できます。
cacheControlMaxAge プロパティの定義
クライアントが ArcGIS Server にリクエストを送信してマップ サービスを表示するときに、通常はサーバーからの応答がブラウザーによって一定期間キャッシュされ、再利用されます。 この動作によって、コンテンツを最高品質で表示することができます。 ただし、アプリケーションでのキャッシュ マップ サービスまたはイメージ サービスと関連データの使用方法に応じて、ブラウザーがキャッシュ内の応答を使用する期間を調整できます。
リクエストが繰り返された場合、キャッシュの最大期間の期限が切れていなければ、ブラウザーは、サーバーにリクエストを送信しないで、キャッシュされている応答を使用します。 キャッシュの最大期間の期限が切れている場合、ブラウザーは、リクエストをサーバーに送信し、キャッシュ内の応答に対応する ETag 値を使用して IF-NONE-MATCH ヘッダーを設定する必要があります。 ArcGIS Server は、リクエストを評価し、ETag 値を使用して、応答が変更されているかどうかを判定します。 サーバーからの応答がブラウザー上のコピーと異なる場合、サーバーは新しい応答をブラウザーに送信します。 応答がブラウザー上のコピーと同一である場合、サーバーは、キャッシュ内の応答を引き続き使用するようにブラウザーに警告します。
クライアントがタイルをローカルにキャッシュすることを許可しないキャッシュされたマップ サービスの場合、デフォルトは 0 です。 これにより、ブラウザーは必ずリクエストを再送し、コンテンツが変更されている場合は ArcGIS Server がそのリクエストを処理して応答します。 このデフォルト値は、ほとんどのアプリに適しています。
クライアントがタイルをローカルにキャッシュすることを許可するキャッシュ マップ サービスの場合、デフォルト値は 86,400 秒 (1 日) です。 このデフォルト値の場合、リクエストが 1 日以内に繰り返された場合、ブラウザーはローカル キャッシュに格納されている応答を使用します。 キャッシュ マップ サービスが頻繁に更新されない場合は、ネットワーク トラフィックを最小限に抑えるために、cacheControlMaxAge プロパティを 30 日 (2,592,000 秒) 以上に増やすことをお勧めします。
cacheControlMaxAge プロパティをサービスに追加してデフォルト値を編集するには、以下の手順を実行します。
- Web ブラウザーで ArcGIS Server Administrator Directory を開き、管理者権限でログインします。
URL の形式は http://gisserver.domain.com:6443/arcgis/admin です。
- [services] をクリックして、変更するマップ サービスまたはイメージ サービスを [Services] リストから選択します。
サービスがリストに表示されない場合は、root フォルダーの下のディレクトリに配置されている可能性があります。
- [Service - <サービス名> (<サービス タイプ>)] ページで下までスクロールし、[edit] をクリックします。
- [Service Properties] ダイアログ ボックスで、サービス JSON の "properties" セクションを見つけます。
- cacheControlMaxAge プロパティをそのセクションに追加して、そのプロパティの値 (秒単位) を指定します。
例を以下に示します。
"properties": { "cacheControlMaxAge": "300",
- [Save Edits] をクリックします。
- cacheControlMaxAge プロパティと選択した値が [プロパティ] セクションに表示されていることを確認します。
可用性の高いファイル共有の使用
オンプレミスの GIS サーバー サイト キャッシュの場合、SAN (ストレージ エリア ネットワーク) または高可用性 NAS (ネットワーク接続ストレージ) を使用する可用性の高いファイル サーバー上にディレクトリを指定できます。 これは、通常、組織の情報技術スタッフによって構成されます。
キャッシュ用に十分な空き容量がある SAN または NAS を組織が利用している場合、これは、マップ キャッシュとイメージ キャッシュの可用性を高めるための最も簡単で最も信頼できるソリューションになります。
このようなファイル サーバーにアクセスできない場合は、次のセクションの説明に従って、ユーザーの環境内の各コンピューター上にキャッシュ ディレクトリを作成します。
高可用性システムでは、キャッシュ ディレクトリをクラウド ストアにバックアップすることができます。 マップまたはイメージ サービス キャッシュのエンド ユーザーは、クラウド ストアからタイルを取得する際に、ローカル ディスクからタイルを取得する場合と比較して、パフォーマンスが低下することがある点に注意してください。 また、クラウド ストアに格納されるキャッシュは、compact v2 ストレージ形式を使用していることを確認してください。
可用性の高いキャッシュの構成
サイト内のすべてのコンピューター上にマップ キャッシュとイメージ キャッシュの複数のコピーを保存すると、キャッシュとサービスの可用性を高めることができます。 GIS サーバー サイト内の各コンピューター上にディレクトリを作成して、それぞれのディレクトリにすべてのキャッシュをコピーします。 GIS サーバーに属しているすべてのコンピューターが、どのキャッシュ ディレクトリにもアクセスできる必要があります。
以下は、ローカル キャッシュ ディレクトリを構成する場合の注意事項です。
- ローカル キャッシュ ディレクトリを使用してサービスが構成されている場合、オンデマンドでのマップ キャッシュを使用することはできません。
- 既存のキャッシュを更新するジオプロセシング ツールは、共通のサイト キャッシュ ディレクトリを出力先とします。 これらのツールを実行する場合は、GIS サーバーに属している各コンピューターのローカル キャッシュ ディレクトリにキャッシュを移動する必要があります。
GIS サーバー サイト内のすべてのコンピューター上にキャッシュ ディレクトリを実装すると、管理オーバーヘッドが増加しますが、可用性の高い GIS サーバーをクラウドに実装するにはこの方法以外にありません。
このソリューションはオンプレミス環境にも実装できます。 このソリューションは、可用性の高いファイル サーバーを利用できず、かつキャッシュの更新頻度が少ないかまったくない場合に推奨されます。
デフォルトでは、マップ キャッシュとイメージ キャッシュは単一のサイト キャッシュ ディレクトリに書き込まれます。 GIS サーバー サイトに属している各コンピューター上にキャッシュ ディレクトリを構成するには、次の手順に従います。
- サーバーのキャッシュ ディレクトリの ArcGIS サービス エンドポイントを開きます。 URL の形式は http://gisserver.domain.com:6080/arcgis/admin/system/directories です。
- サイト キャッシュを選択します。
- [編集] をクリックします。
- [Use Local Directory] を [TRUE] に設定します。
- ローカル キャッシュ ディレクトリのパスを指定します。 キャッシュ ディレクトリは、すべてのコンピューター上で同じ場所に作成する必要があります。
設定が完了すると、ArcGIS Server は、該当のコンピューターに公開されているマップ サービスとイメージ サービス用のキャッシュを、指定されたローカル キャッシュ ディレクトリに作成します。
- 既存のキャッシュ データをサイト キャッシュ ディレクトリから各ローカル キャッシュ ディレクトリへ手動でコピーします。
データのコピーを試行する前に、既存のキャッシュの構築が完了していることを確認してください。
キャッシュの移動には robocopy などを使用できます。
robocopy <location of existing cache> <local cache directory> /s