Verwendung des Karten-Caches durch Clients
In diesem Thema
- Zugriff auf den Cache und Verwendung des Cache in den Anwendungen
- Verbessern der Darstellungs-Performance von gecachten Karten-Services
- Lokales Caching von Layern in
ArcGIS for Desktop - Überlagern von Caches
- Erzwingen einer dynamischen Zeichnung
Dieses Thema gliedert sich in drei Teile. Im ersten Abschnitt wird beschrieben, wie ArcGIS-Anwendungen auf die Kacheln in einem Karten-Cache zugreifen und diese verwenden. Im zweiten Teil erfahren Sie, wie die Kacheln in diesen Anwendungen für spätere Verwendungszwecke gespeichert werden. Im dritten Abschnitt wird erläutert, wie die Darstellungs-Performance von Kacheln verbessert werden kann, indem die Zeit, die ein Webbrowser die Kacheln in seinem lokalen Cache verwendet, angepasst wird. Der letzte Abschnitt enthält Anweisungen für das Überlagern von Karten-Caches in ArcGIS-Anwendungen.
Zugriff auf den Cache und Verwendung des Cache in den Anwendungen
Sobald Sie ein Kachelschema für Ihren Karten-Service definiert haben, versucht der Service unmittelbar, den Cache zu verwenden. Der Cache wird von allen ArcGIS-Anwendung verwendet, die einen Karten-Service anzeigen können. Die Kacheln werden jedoch von jeder Anwendung auf andere Weise abgerufen und verwendet.
Webanwendungen
Bei der Entwicklung mithilfe der ArcGIS API for JavaScript geben Sie mithilfe einer bestimmten Klasse an, dass Sie eine Verbindung zu einem gekachelten Karten-Service (gecacht) herstellen. Sie verwenden beispielsweise ArcGISTiledMapServiceLayer, um eine Verbindung mit einem gecachten Service herzustellen. Bei Verwendung des gecachten Service werden Kacheln mittels REST-Aufrufen des Karten-Service aus dem Cache-Verzeichnis abgerufen. Die Kachelanforderung hat folgendes Format: http://<map service URL>/tile/<level>/<row>/<column>.
Wenn Sie einen einzelnen gecachten Service in einer Webanwendung abrufen und auf einen Bereich ohne Kacheln schwenken, zeigt die Anwendung kein dynamisches Bild an. Die Anzeige ist in diesem Fall leer. Sie können sicherstellen, dass beim Schwenken auf einen nicht gecachten Bereich eine Karte angezeigt wird, indem Sie das bedarfsgesteuerte Caching aktivieren.
Tipp:
Wenn die Karte langsamer als erwartet angezeigt wird, überprüfen Sie die URLs der Kartenbilder und stellen Sie sicher, dass die Anwendung Kacheln abruft. Sie können hierfür die Anwendung in Mozilla Firefox öffnen und auf Firefox > Web Developer > Web Console klicken. Sobald die Konsole angezeigt wird, klicken Sie auf die Schaltfläche Net, und zoomen oder schwenken Sie die Karte.
Wenn URLs wie diese angezeigt werden, ruft die Anwendung erfolgreich Kacheln aus REST-Anforderungen ab:
http://gisserver.domain.com:6080/arcgis/rest/services/myService/MapServer/tile/10/1723/3495.jpg
Wenn ein anderes URL-Format für die Kartenbilder angezeigt wird, ruft die Anwendung die Kachel auf eine weniger effiziente Weise ab, oder der Cache wird nicht verwendet.
ArcMap und ArcGIS Pro
Sie fügen ArcMap und ArcGIS Pro die gecachten Karten-Services mithilfe der Schaltfläche Daten hinzufügen auf die gleiche Weise wie andere Karten-Services hinzu. Zum Anzeigen eines Cache stehen zwei Möglichkeiten zur Verfügung:
- Greifen Sie über einen Karten-Service auf den Cache zu – Um den Cache auf diese Weise anzuzeigen, wechseln Sie zum GIS-Server und Karten-Service, die zum Erstellen des Caches verwendet wurden. In diesem Szenario wird eine Verbindung mit dem GIS-Server hergestellt, um zu ermitteln, ob der Service über einen Cache verfügt. Dann werden die Kacheln aus dem Cache-Verzeichnis im Dateisystem des Servers abgerufen.
- Greifen Sie auf den Cache als Raster-Dataset zu – Um einen Cache auf diese Weise anzuzeigen, wechseln Sie zu dem Verzeichnis mit den Cache-Kacheln, und fügen Sie das Dataset hinzu. Der Cache wird mit dem gleichen Symbol dargestellt, das zum Hinzufügen aller anderen Raster mithilfe der Schaltfläche Daten hinzufügen verwendet wurde. Ein Cache, auf den als Raster zugegriffen wurde, dient nur zur Anzeige und kann nicht abgefragt werden. Der Vorteil dieses Typs von Cache ist, dass er nicht an einen Karten-Service gebunden ist und auch ohne Verbindung zum Server angezeigt werden kann, solange Sie Zugriff auf das Cache-Verzeichnis haben.
Wenn eine Kachel in einem Maßstab angefordert wird, der exakt mit einer Maßstabsebene im Cache übereinstimmt, gibt der Karten-Service die Kachel direkt zurück. In den meisten Fällen stimmen die Anforderungen jedoch nicht genau mit den Maßstabsebenen im Cache überein. Die Kachel der nächsten Maßstabsebene wird dann angefordert und führt ein Resampling durch, um sie an den angeforderten Maßstab anzupassen. Dieses Resampling ist deutlich schneller als das dynamische Generieren einer Kachel, das resultierende Bild stimmt jedoch nicht genau mit der ursprünglichen Kachel überein. Gecachte Kartenbeschriftungen sind aufgrund des Resamplings in bestimmten Maßstäben möglicherweise nur schlecht lesbar. Um optimale Ergebnisse zu erzielen, sollten Sie die Karte in dem gleichen oder einem ähnlichen Maßstab anzeigen, mit dem der Cache erstellt wurde.
ArcGlobe und ArcGIS Explorer
ArcGlobe und ArcGIS Explorer können 2D-Caches lesen und auf der Globusoberfläche drapieren. Eine maximale Performance erzielen Sie, wenn Sie den Cache mit dem Kachelschema ArcGIS Online/Google Maps/Bing Maps erstellen. Wenn diese Kachelschemas nicht verfügbar sind, erzielen Sie die beste Performance unter Verwendung von Globe-Services.
Ein Szenario, in dem Sie ArcGlobe einen Karten-Service hinzufügen möchten, kann sein, wenn Sie einen 2D-Karten-Cache erstellt haben und einen identischen 3D-Globe-Cache aus dem 2D-Cache erstellen möchten. In einem solchen Szenario müssten Sie nur den Cache generieren und nicht im Globus navigieren.
Verbessern der Darstellungs-Performance von gecachten Karten-Services
Wenn Clients Anforderungen an den ArcGIS-Server senden, um einen Karten-Service anzuzeigen, wird die Antwort vom Server normalerweise vom Browser gecacht und für einen bestimmten Zeitraum wiederverwendet. Dieses Verhalten unterstützt den ArcGIS-Server dabei, die bestmögliche Darstellungs-Performance für Ihren Karten-Service zu erzielen. Abhängig davon, wie der Karten-Service und die ihm zugeordneten Daten in Anwendungen verwendet werden, können Sie die Länge des Zeitraums anpassen, den der Browser eine Antwort in seinem Cache verwendet. Dies können Sie erreichen, indem Sie eine Eigenschaft mit dem Namen cacheControlMaxAge zur JavaScript Object Notation (JSON) des Service hinzufügen.
Verwendung der cacheControlMaxAge-Eigenschaft
ArcGIS-Server-Karten-Service-Antworten enthalten ein Entitätstag (ETag) und einen Cache-Control-Header. Der ETag-Header-Wert ist eine eindeutige Kennung der Antwort. Der Cache-Control-Header verfügt über einen max-age-Wert, der Informationen zum Browser bezüglich des maximalen Zeitraums, den eine Antwort aus dem Browser-Cache wiederverwendet werden kann. Dieser Wert wird von der Eigenschaft cacheControlMaxAge festgelegt.
Wenn eine Anforderung wiederholt wird und das maximale Alter des Cache nicht überschritten wurde, verwendet der Browser die gecachte Antwort, ohne die Anforderung an den Server zu senden. Wenn das maximale Alter überschritten wurde, muss der Browser die Anforderung an den Server senden und einen IF-NONE-MATCH-Header mit zugeordnetem ETag-Wert festlegen, der der Antwort im Cache entspricht. Der ArcGIS-Server wertet die Anforderung aus und bestimmt anhand des ETag-Wertes, ob die Antwort sich geändert hat. Wenn sich die Antwort vom Server von der Kopie im Browser unterscheidet, sendet der Server eine vollständig neue Antwort an den Browser. Wenn die Antwort mit der Kopie im Browser identisch ist, benachrichtigt der Server den Browser, dass die Antwort im Cache weiter verwendet werden soll.
Definieren des Wertes der cacheControlMaxAge-Eigenschaft
Als ArcGIS-Server-Administrator können Sie die cacheControlMaxAge-Eigenschaft definieren, um anzugeben, wie lange ein Browser eine gecachte Antwort verwenden darf. Da der ArcGIS-Server nicht immer eine vollständige Antwort senden muss, kann der Browser-Cache effizienter verwendet werden, Ihre Anwendungen werden optimiert und es wird Netzwerkbandbreite gespart.
Bei gecachten Karten-Services, die das lokale Cachen von Kacheln auf Clients nicht zulassen, ist der Standardwert 0. Dies bedeutet, der Browser sendet eine Anforderung immer erneut und der ArcGIS-Server verarbeitet die Anforderung und sendet eine vollständige Antwort an den Browser, wenn sich der Inhalt geändert hat. Dieser Wert eignet sich für die meisten Anwendungen.
Bei gecachten Karten-Services, die das lokale Cachen von Kacheln auf Clients zulassen, ist der Standardwert 86.400 Sekunden (1 Tag). Dies bedeutet, wenn eine Anforderung innerhalb von einem Tag wiederholt wird, verwendet der Browser die Antwort aus dem Cache.
Bei gecachten Karten-Services, deren Karte oder Daten sich nicht häufig ändern, empfiehlt es sich, den Standardwert auf 30 Tage (2.592.000 Sekunden) oder länger zu erhöhen, um den Netzwerkdatenverkehr so gering wie möglich zu halten.
Gehen Sie wie folgt vor, um die cacheControlMaxAge-Eigenschaft zu Ihrem Service hinzuzufügen und ihren Standardwert anzugeben:
- Öffnen Sie ArcGIS Server Administrator Directory in einem Web-Browser, und melden Sie sich als Benutzer an, dem Administratorberechtigungen zugewiesen sind. Die URL hat das Format http://gisserver.domain.com:6080/arcgis/admin.
- Klicken Sie auf Services, und wählen Sie den Karten-Service, den Sie ändern möchten, aus der Liste Services aus. Wenn der Service nicht in der Liste angezeigt wird, befindet er sich möglicherweise in einem Verzeichnis unterhalb des Stammordners.
- Führen Sie auf der Seite Service - <Service-Name> (<Service-Typ>) einen Bildlauf bis zum unteren Rand aus, und klicken Sie auf Bearbeiten.
- Suchen Sie im Dialogfeld Service-Eigenschaften den Abschnitt "properties" des Service-JSON.
- Fügen Sie dem Abschnitt die cacheControlMaxAge-Eigenschaft hinzu und geben Sie den Wert (in Sekunden) für die Eigenschaft an, zum Beispiel:
"properties": { "cacheControlMaxAge": "2592000",
- Klicken Sie auf Änderungen speichern.
- Stellen Sie auf der Seite Service - <Service-Name> (<Service-Typ>) sicher, dass die cacheControlMaxAge-Eigenschaft und der Wert, den Sie dafür angegeben haben, im Abschnitt Eigenschaften angezeigt wird.
Lokales Caching von Layern in ArcGIS for Desktop
ArcGIS for Desktop (ArcMap, ArcGIS Pro, ArcGIS Explorer und ArcGlobe) verfügen über lokale Caches mit den von Ihnen aufgesuchten Kacheln. Wenn Sie diese Bereiche erneut zoomen oder auf diese schwenken, verwenden die Anwendungen den lokalen Cache und müssen die Kacheln nicht ein zweites Mal vom Server abrufen.
Sie können auswählen, ob Sie den lokalen Cache für zukünftige Sitzungen auf der Festplatte speichern möchten oder ob Sie den lokalen Cache nur für die aktuelle Sitzung verwenden möchten.
Sie können auch angeben, dass die Kacheln nicht im lokalen Cache gespeichert werden sollen. Hierdurch geht zwar die höhere Performance infolge des lokalen Cachings verloren, Sie rufen aber garantiert immer die neueste Kachel vom Server ab.
Es ist möglich, dass der Serveradministrator das lokale Caching des Layers deaktiviert hat. In diesem Fall erhalten Sie ebenfalls immer die aktuelle Kachel. Wenn dies der Fall ist, sind die anderen Optionen zum lokalen Speichern des Cache nicht verfügbar.
Wenn der Serveradministrator einen Bereich des Server-Caches aktualisiert, den Sie bereits angezeigt haben, müssen Sie den lokalen Cache löschen, damit die Änderungen sichtbar sind. ArcGIS for Desktop kann nicht erkennen, ob ein Cache aktualisiert wurde. Als Serveradministrator müssen Sie die Benutzer daher benachrichtigen, wenn aktualisierte Daten verfügbar sind, damit diese die lokalen Caches löschen können.
Überlagern von Caches
Beim Entwerfen von Karten-Caches, die mit anderen Karten-Caches überlagert werden, sind einige wichtige Faktoren für den Cache-Entwurf zu beachten, je nachdem welche Anwendung zum Anzeigen der Caches verwendet wird.
Überlagern von Karten-Caches in Webanwendungen
Für Webanwendungen, die mit der ArcGIS API for JavaScript erstellt wurden, müssen Sie beim Überlagern von Caches das Koordinatensystem und die Kachelgröße anpassen. Ebenso empfiehlt es sich, möglichst viele Maßstäbe zur Deckung zu bringen.
Am einfachsten ist dies zu realisieren, indem Sie die Kachelschemas für beide Caches anpassen und Kacheln nur in den Maßstäben erstellen, die für jeden Cache sinnvoll sind. Auf diese Weise können Sie sicher sein, dass Sie das Koordinatensystem und die Kachelgröße angeglichen haben und dass die Software die übereinstimmenden Maßstäbe der beiden Caches erkennt.
Überlagern von Karten-Caches in ArcMap und ArcGIS Pro
In ArcMap und ArcGIS Pro kann eine beliebige Anzahl von Karten-Caches überlagert werden. Die Caches müssen nicht die gleichen Kachelschemas oder die gleichen Projektionen aufweisen. Aufgrund des Resamplings und der Neuprojizierung, die ausgeführt werden, kann durch Verwendung ähnlicher Kachelschemas und Projektionen jedoch die Performance und die Darstellungsqualität der Karte optimiert werden.
Erzwingen einer dynamischen Zeichnung
Es gibt jedoch Situationen, in denen Sie möglicherweise erzwingen möchten, dass der Service den Cache ignoriert und dynamisch zeichnet, obwohl Kacheln auf einigen Ebenen verfügbar sind. Nehmen Sie beispielsweise an, Sie entwickeln eine Webanwendung mit der ArcGIS API for JavaScript. Sie verfügen über eine Karte, die aus den Zoom-Stufen 0 bis 15 gecacht wurde, jedoch aus den Stufen 16 bis 19 dynamisch gezeichnet werden sollte. Dies kann der Fall sein, wenn Sie Echtzeitdaten in großen Maßstäben anzeigen möchten oder wenn die Karte einen Bereich abdeckt, der zu breit ist, um in großen Maßstäben gecacht zu werden.
Dieses Szenario kann gelöst werden, indem Sie dynamische Layer auf dem Server aktivieren und in Ihren Kartenanforderungen für die Maßstäbe 16-19 angeben, dass dynamische Layer verwendet werden. Andernfalls gibt der Service eine Karte zurück, die aus verfügbaren Kacheln erstellt wird und die in Bereichen, in denen keine Kacheln vorhanden sind, leer ist.