Wenn Sie Karten-Caches in Client-Anwendungen verwenden, müssen Sie berücksichtigen, wie Kacheln in der Anwendung verarbeitet werden, ob die Kacheln lokal gespeichert werden und welche Bedingungen für Cache-Überlagerungen erfüllt sein müssen.
Zugriff auf den Cache und Verwendung des Cache in den Anwendungen
Sobald Sie ein Kachelschema für Ihren Kartenservice definiert haben, versucht der Service unmittelbar, den Cache zu verwenden. Der Cache wird von allen ArcGIS-Anwendung verwendet, die einen Kartenservice 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 Kartenservice aus dem Cache-Verzeichnis abgerufen. Die Kachelanforderung hat folgendes Format: https://<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:
https://gisserver.domain.com:6443/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.
ArcGIS Pro
Sie fügen 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 Kartenservice auf den Cache zu – Um den Cache auf diese Weise anzuzeigen, wechseln Sie zum GIS-Server und Kartenservice, 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 Kartenservice 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 Kartenservice 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.
Drucken von Karten mit gecachten Inhalten
Die Standards für Karten-Caches und das Drucken von Webkarten sind an der Anforderung ausgerichtet, dass in verschiedenen Maßstäben eine konsistente Druckleistung erzielt wird. Dennoch kann es vorkommen, dass Sie die Auflösung eines gecachten Kartenservice in Bezug auf die Druckqualität unzureichend finden. Gedruckte Karten erfordern häufig eine Auflösung von mindestens 200 dpi, während gecachte Karten in ArcGIS in Regel 96 dpi aufweisen.
Der in ArcGIS Server integrierte PrintingTools-Service wägt die Ziele des Cachings und des Druckens von Karten gegeneinander ab. Dafür werden dynamische Layer verwendet, die standardmäßig in Kartenservices aktiviert sind.
Der Service berücksichtigt, ob dynamische Layer aktiviert sind. Wenn für einen Kartenservice (einschließlich eines WMS-Service) mit gecachten Inhalten dynamische Layer aktiviert sind, führt der Service in den Quelldaten eine Abfrage nach dem Kartenservice aus und exportiert die Kartenausdehnung in höherer Auflösung. Dies ist ein dynamischer Vorgang, der den Karten-Cache umgeht.
Wenn in einem Karten- oder WMS-Service mit gecachten Inhalten keine dynamischen Layer aktiviert sind, exportiert der PrintingTools-Service stattdessen die Kartenausdehnung aus dem serverseitigen Cache. Als Ergebnis dieses Vorgangs wird eine Karte mit der Auflösung von 96 dpi des Karten-Caches angezeigt, die möglicherweise nicht den Erwartungen an eine gedruckte Karte entspricht.
Für eine Druckausgabe in hoher Qualität (bzw. mit hoher Auflösung) aus einem gecachten Kartenservice mit dem PrintingTools-Service empfiehlt es sich, die Option für dynamische Layer zu aktivieren.
Verbessern der Darstellungs-Performance von gecachten Kartenservices
Wenn Clients Anforderungen an den ArcGIS Server senden, um einen Kartenservice 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 Kartenservice zu erzielen. Abhängig davon, wie der Kartenservice 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-Kartenservice-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. ArcGIS Server wertet die Anforderung aus und bestimmt anhand des ETag-Wertes, ob sich die Antwort 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
Definieren Sie die cacheControlMaxAge-Eigenschaft, um anzugeben, wie lange ein Browser eine gecachte Antwort verwenden darf. Diese Eigenschaft ist für Service-Caches individuell einstellbar. Da 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 Kartenservices, 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 Kartenservices, 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.
Weitere Informationen zur lokalen Cache-Speicherung
Bei gecachten Kartenservices, 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 in einem Web-Browser das ArcGIS Server-Administratorverzeichnis, und melden Sie sich als Benutzer an, dem Administratorberechtigungen zugewiesen sind. Die URL hat das Format https://gisserver.domain.com:6443/arcgis/admin.
- Klicken Sie auf Services, und wählen Sie den Kartenservice, 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 unter Stammordner.
- Führen Sie auf der Seite Service - <Service-Name> (<service type>) einen Bildlauf bis zum unteren Rand aus, und klicken Sie auf edit.
- 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 Eigenschaft cacheControlMaxAge und der Wert, den Sie dafür angegeben haben, im Abschnitt Eigenschaften angezeigt wird.
Überlagern von Caches
Beim Entwerfen von Karten-Caches zwecks Überlagerung mit anderen Karten-Caches müssen das Koordinatensystem und die Kachelgröße angepasst werden. 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.