Wenn Sie Karten-Caches in verschiedenen Clients (webbasiert oder desktopbasiert) 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 Kartenservice (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.
ArcMap und ArcGIS Pro
Sie fügen ArcMap und ArcGIS Pro die gecachten Kartenservices mithilfe der Schaltfläche Daten hinzufügen auf die gleiche Weise wie andere Kartenservices 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.
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. 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
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 das ArcGIS-Server-Administratorverzeichnis in einem Web-Browser, 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 unterhalb des Stammordners.
- 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 Save Edits.
- 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.
Erzwingen einer dynamischen Zeichnung
Sollten Sie feststellen, dass Ihre Kacheln aufgrund von Resampling von schlechter Qualität sind, oder Sie in bestimmten Maßstäben dynamische Daten anzeigen wollen, können Sie den Service zwingen, den Cache zu ignorieren und die Karte dynamisch darzustellen. Dies ist für bestimmte Kartenebenen möglich.
Nehmen Sie beispielsweise an, Sie möchten Echtzeitdaten bei großen Maßstäben anzeigen. 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 lässt sich dadurch lösen, dass Sie für die Zoomstufen 16-19 dynamische Layer aktivieren und in Ihren Kartenanforderungen angeben, dass auf diesen Stufen 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.