Optimieren der Performance in ArcGIS

ArcGIS ermöglicht es Ihnen, Benutzern eine Reihe von Ressourcen zur Verfügung zu stellen: Apps, Karten, Layer, Services und Daten. Um die beste Performance für Benutzer zu erzielen, die auf eine Ressource zugreifen, ist es wichtig, zu verstehen, dass es je nach Ressourcentyp unterschiedliche Optimierungsmethoden gibt. Die verfügbaren Optionen können von der Backend-Datenquelle, der Art des räumlichen Service oder anderen Faktoren abhängen. Das Verständnis der verschiedenen Arten der Optimierung spielt eine wichtige Rolle, wenn es darum geht, eine positive und effektive User Experience zu gewährleisten.

In diesem Abschnitt werden allgemeine Strategien zum Bewerten der Benutzeranforderungen, des Netzwerkdesigns und der Caching-Optionen behandelt. Weitere Informationen zu spezifischen Optimierungsstrategien finden Sie unter Optimieren von Webkarten und -Apps und Optimieren von Datenquellen und -speicherung.

Bewerten der Benutzeranforderungen

Bei der Optimierung geht es um mehr als die Minimierung der Antwortzeit für HTTP-Anfragen. Ein Service, der schnelle, aber nicht hilfreiche Antworten mit geringer Latenz sendet, ist nicht unbedingt optimiert. Ermitteln Sie, wer die Ressource oder den Service verwenden soll und warum. Beschäftigen Sie sich mit den Fragen, die der Benutzer beantwortet haben möchte, indem Sie mit der Ressource interagieren. Verwenden Sie strukturierte Tests, um eine gute Performance der Ressource auf den verschiedenen Clientgeräten, von denen aus Benutzer auf die Ressourcen zugreifen, zu gewährleisten. Berücksichtigen Sie das Feedback der Benutzer zur Nützlichkeit der Ressource während der Entwicklung und nach der Bereitstellung der Ressource für die allgemeine Verwendung.

Die Benutzeranforderungen geben auch Aufschluss darüber, welche Arten von Performance-Optimierungen es wert sind, implementiert zu werden. Wenn eine Ressource nur wenige Male am Tag von einer kleinen internen Gruppe verwendet wird, ist es nicht so wichtig, sie so weit zu optimieren, dass sie auf Tausende von Anforderungen pro Sekunde skaliert wird. Diese Art der Optimierung könnte jedoch für eine Ressource, die von einer öffentlichen Zielgruppe weltweit genutzt wird, von entscheidender Bedeutung sein.

Entwerfen von Netzwerken im Hinblick auf die Performance

Das Design des Netzwerks, in dem ArcGIS-Komponenten bereitgestellt werden, trägt wesentlich zur Performance bei (sowohl zu einer guten als auch zu einer schlechten Performance). Unternehmenssysteme sind häufig globaler Natur und werden von Benutzern über eine Vielzahl von Netzwerkbedingungen und -verbindungen hinweg verwendet. Außerdem bestehen wichtige Unterschiede zwischen ArcGIS-Komponenten und -Workflows in Bezug auf ihre Abhängigkeit von der Netzwerkverbindung. Der Umfang der Netzwerküberlegungen für ArcGIS-Workflows geht über dieses Thema hinaus, aber einige erste Empfehlungen und Überlegungen umfassen die folgenden:

  • Im Allgemeinen wirkt sich die Netzwerklatenz für den täglichen GIS-Betrieb stärker auf die User Experience aus als die Netzwerkbandbreite. Für Aktivitäten wie das Herunterladen von Daten, das Kopieren von Dateien oder das Anzeigen großer Bilddaten-Datasets ist die Bandbreite ebenfalls wichtig.
  • Der Datenverkehr von ArcGIS Pro direkt zu Datenbanken ist latenzempfindlich. Beim Anzeigen und Bearbeiten von Daten sowie beim Arbeiten mit und Ändern von Schemas werden viele kleine Aufrufe getätigt.
  • Der Datenverkehr von ArcGIS Server zu Datenbanken, Datei- oder Objektspeichern erfordert ebenfalls eine geringe Latenz und im Allgemeinen eine hohe Bandbreite. Auf diese Weise kann der Serverprozess auf die Daten zugreifen, sie so transformieren, dass sie den Benutzeranforderungen entsprechen, und eine optimierte Antwort an die Benutzer zurücksenden.
  • Clients wie Browser, die auf Webanwendungen und Web-Services zugreifen, reagieren weniger empfindlich auf Netzwerkeinschränkungen als Desktop-Clients, da Werkzeuge wie das ArcGIS Maps SDK for JavaScript Anforderungen optimieren, um übermäßigen Datenverkehr zu reduzieren.
  • Viele moderne Netzwerke verwischen die Unterscheidung zwischen lokalen Ressourcen und Cloud-Ressourcen durch Netzwerk-Peering und andere Technologien, was zu einer sehr geringen Latenz zwischen Cloud-Ressourcen und lokalen Ressourcen oder Clients führen kann. Generell wird empfohlen, Clients, Serverprozesse, Speicher und Datenbanken in der gleichen “Netzwerkzone” zu hosten, etwa alle in der Cloud oder alle lokal. In einigen Szenarios ist es jedoch akzeptabel, dass Clients von Servern oder Server von Datenbanken getrennt werden. Wie geeignet dieses Design für Ihr System ist, hängt von Ihrem Netzwerkdesign und von strukturierten Tests der relevanten Workflows ab, die sich entsprechend auswirken.

Verwenden des Caching von Abfragen und Abfrageantworten

Wiederholte Anforderungen von Ressourcen können einen erheblichen Rechenaufwand bei der Generierung dieser Ressourcen mit sich bringen. Durch das Bereitstellen einer zwischengespeicherten Antwort kann dieser Aufwand vermieden werden. So werden weniger Systemressourcen beansprucht und die Antwortzeiten reduziert. Durch eine möglichst umfangreiche Nutzung von Caching kann die Performance von ArcGIS-Ressourcen erheblich verbessert werden.

Es gibt keinen einheitlichen Ansatz für die Verwendung von Caching mit der Vielzahl von Webanwendungen und Services, die in ArcGIS verwendet werden können, sondern eine Vielzahl von Mustern, die mit Bedacht und Planung verwendet werden sollten. Zu den gängigen Methoden für das Caching gehören:

  • Caching von Kartenbild-Layern, bei dem eine Karte vorab in standardisierte Raster-Kacheln gerendert wird, die ohne serverseitige Kartengenerierung an einen Client zurückgegeben werden können.
  • Caching von Vektorkacheln, bei dem die Features aus einer Karte vorab in Kacheln mit komprimierten und optimierten Vektordaten gerendert werden und die Anzeige der Karte in einer externen Style-Datei definiert wird.
  • Caching von Bilddaten-Layern, bei dem ein Image-Service in Standardkacheln gecacht wird (nahezu identisch mit dem Kartenbild-Layer-Cache), um die Rendering-Geschwindigkeit zu verbessern oder den Client-Zugriff zu steuern.
  • Caching von Feature-Kacheln, bei dem Feature-Layer mithilfe standardisierter Ausdehnungen abgefragt werden, sodass der Serverprozess die Antwort zwischenspeichern und zwischenspeicherbare Header an Clients zurückgeben kann.
  • Clientseitiges Caching, bei dem Antworten einen Header oder eine Eigenschaft enthalten, die angibt, dass der Client die Ressource mehrmals verwenden kann, bevor sie erneut angefordert wird.
  • Content Delivery Networks, bei denen es sich um komplexe Komponenten handelt, die für das Caching von Anfrageantworten auf mehreren Points of Presence in einem geografischen Gebiet oder auf der ganzen Welt bestimmt sind.

Beim Caching von Raster- und Vektorkacheln werden Eingabedaten, auf die andernfalls dynamisch über eine Karte, ein Feature oder einen Image-Service zugegriffen werden könnte, in Kacheln gecacht. Diese Kacheln stellen vordefinierte standardisierte Bilder dar, die gerenderte Daten anzeigen. Gecachte Kacheln ermöglichen es Clients, mehrere vorab gerenderte Kacheln gleichzeitig für einen bestimmten Maßstab anzufordern. Dadurch kommt es zu einer Wartezeit, während der Server auf die Backend-Daten zugreift und diese abruft. Das Caching von Raster- und Vektorkacheln wird durch das Erstellen von Kachel-Layern ermöglicht, während das Caching von Feature-Kacheln eine zusätzliche Konfiguration der Eigenschaften eines Service erfordert.

Jede dieser Caching-Strategien ist mit einer Vielzahl von Konfigurationen, Optionen und Auswahlentscheidungen verbunden, die während der Optimierung eines Service festgelegt werden müssen. Weitere Informationen zu diesen Bereichen finden Sie in der Dokumentation, in den Ressourcen und in den Konferenzberichten von Esri.

Zugehörige Ressourcen:

Strategien für das Caching von Kartenbild-Layern

Kartenbild-Layer-Kacheln sind Raster-Bilder, die eine vorab gerenderte Ansicht der Daten anzeigen, die dann auf dem Client als ein Satz mehrerer zusammengefügter Kacheln für jede Anzeigeausdehnung dargestellt werden. Raster-Kacheln können aus Kartenservices, gehosteten Feature-Services oder Image-Services erstellt werden, wobei für die einzelnen Kacheln leicht unterschiedliche Überlegungen gelten.

Raster-Kachel-Caching ist eine effektive Methode, wenn relativ statische Daten bereitgestellt werden, die in einer primären kartografischen Darstellung angezeigt werden sollen. Die Erstellung von Karten-Caches kann zeit- und rechenintensiv sein. Sie eignet sich daher am besten für Daten, die selten aktualisiert werden. Raster-Kacheln können zwar eine hervorragende Performance und Skalierbarkeit aufweisen, bieten dem Benutzer jedoch nicht die Möglichkeit, Attribute abzufragen, Features zu identifizieren, Symbole zu ändern, die Beschriftung von Layern zu deaktivieren usw.

Während Raster-Kacheln viele Jahre lang zum Bereitstellen kartografischer Grundkarten verwendet wurden, werden bei diesen Services heute aus verschiedenen Gründen der Performance, Kartenqualität und Flexibilität am häufigsten Vektorgrundkarten verwendet. Raster-Kacheln werden nach wie vor verwendet, um viele Bilddaten-Grundkarten oder Services auf der Grundlage von Satelliten- oder Orthofotografien bereitzustellen, da diese Services darauf abzielen, einen einzelnen, sorgfältig ausbalancierten Bilddaten-Layer als Hintergrund für Anwendungen oder Werkzeuge darzustellen.

Weitere Informationen zum Caching von Kartenbild-Layern finden Sie in den folgenden Ressourcen:

Strategien für Vektorkachel-Caching

Vektorkachel-Caching ist ähnlich wie Raster-Kachel-Caching, aber die Kacheln sind komprimierte Binärdateien (basierend auf Protokollpuffern), in denen Vektor-Features als Geometrie und Attribute gespeichert werden. Sie werden in einzelne Kacheln unterteilt und dann anhand einer anderen Style-Definition wieder zusammengesetzt und auf dem Client gerendert.

Das Caching von Vektorkacheln eignet sich dort, wo eine Raster-Kachel möglicherweise einschränkend oder aus anderen Gründen ungeeignet ist. Vektorkacheln können schneller als Raster-Kacheln generiert werden und kleiner als diese sein, was Vorteile in Bezug auf die Speicherung des Kachelsatzes sowie auf die Geschwindigkeit hat, mit der die Vektorkacheln über eine Netzwerkverbindung an einen Client übertragen werden.

Vektorkacheln ermöglichen auch dynamisches Rendering durch die Verwendung eines Vektorkachel-Styles, der vollständig im Client, z. B. einem Browser oder einer nativen Anwendung, konfiguriert oder aktualisiert werden kann und verschiedene Layer dynamisch ein- oder ausblenden, basierend auf Attributen filtern und mehrere verschiedene kartografische Versionen derselben Daten anzeigen kann, die alle denselben einzelnen Vektorkachel-Layer verwenden.

Strategien für das Caching von Feature-Kacheln

Im Gegensatz zu Vektorkacheln und Raster-Kacheln werden Feature-Kacheln nicht durch einen geplanten Prozess vorab generiert. Stattdessen werden sie von funktionalitätsbezogenen Clients generiert, die standardisierte Datenausdehnungen für Standardzoomstufen anfordern. Da diese Anforderungen zwischen verschiedenen Clients identisch sind, können die Features gecacht und wiederverwendet oder erneut an andere Clients gesendet werden. Diese Funktionalität ist ausschließlich für die Verwendung durch Clients verfügbar, die für die Verwendung dieses Features konzipiert sind, hauptsächlich über das ArcGIS Maps SDK for JavaScript sowie über ArcGIS Pro und native Anwendungen, die mit ArcGIS Maps SDKs erstellt wurden.

Die Verwendung von Feature-Kacheln beruht auf zwei wichtigen Annahmen:

  • Der Service unterstützt Feature-Kacheln. Feature-Kacheln werden nur verwendet, wenn Anforderungen an Feature-Layer (basierend auf einem Karten- oder Feature-Service) gesendet werden, die diese Funktion unterstützen, was je nach Version unterschiedlich ist. Diese Funktionalität wird seit mehreren Jahren von ArcGIS Online-basierten gehosteten Feature-Services unterstützt. In ArcGIS Enterprise müssen die einzelnen Layer in einem gehosteten Feature-Service mit einer REST-API-Anforderung konfiguriert werden, um das Caching von Feature-Kacheln zu ermöglichen. Die gecachten Feature-Kacheln werden im Objektspeicher gespeichert.
  • Der Client, der die Anforderung ausführt, unterstützt Feature-Kacheln. In der Regel fordern Clients, die Feature-Kacheln unterstützen, diese automatisch von Services an, die sie unterstützen. ArcGIS Online bietet zwar mehrere Caching-Layer für diese Feature-Kacheln, aber für ArcGIS Enterprise-basierte Layer sind zusätzliche Überlegungen erforderlich, um dieses Feature optimal zu nutzen.

Gehostete Feature-Services in ArcGIS Online enthalten eine Option zum Aktivieren einer optimierten Layer-Darstellung, mit der Daten mit reduzierter Auflösung in der Datenbank generiert werden können, um kleinere (verkleinerte) Ansichtsmaßstäbe anzuzeigen. Diese Daten mit reduzierter Auflösung werden bei Verwendung dieser Maßstäbe automatisch vom Feature-Kachel-Generierungsprozess abgefragt, was wiederum die Antwort-Performance verbessert.

Weitere Informationen zum Caching von Feature-Kacheln finden Sie in den folgenden Ressourcen:

Strategien zum Optimieren von clientseitigem Caching

In ArcGIS Enterprise können Sie sowohl Karten- als auch Feature-Services so konfigurieren, dass ein Cache-Control-Header zurückgegeben wird. Dieser ermöglicht es dem Browser eines Benutzers, das Caching von Antwortinhalten basierend auf einem ETag-Wert zu nutzen.

Wenn Clients Anforderungen an ArcGIS Server senden, um einen Kartenexport anzufordern oder einen Feature-Service abzufragen, auf den diese Einstellung angewendet wurde, kann die Antwort vom Server in der Regel im Browser gecacht und für einen bestimmten Zeitraum wiederverwendet werden. Abhängig davon, wie der Karten- oder Feature-Service und die ihm zugeordneten Daten in Anwendungen verwendet werden, können Sie die Länge des Zeitraums anpassen, in der der Browser eine Antwort aus seinem Cache verwendet. Dies können Sie erreichen, indem Sie eine Eigenschaft mit dem Namen cacheControlMaxAge zur JavaScript Object Notation (JSON)-Definition des Service hinzufügen.

Content Delivery Network (CDN)

Ein Content Delivery Network (CDN) cacht Inhalte auf Edgeservern, die sich in größerer geografischer Nähe zum Benutzer befinden. CDNs verkürzen die Antwortzeiten für Anfragen, indem sie eine Datenbankabfrage überflüssig machen und die Latenz durch längere Netzwerkreisen reduzieren.

Sowohl öffentlich freigegebene gehostete Feature-Layer als auch statische Ressourcen der Webanwendung, die in ArcGIS Online gehostet werden, verwenden automatisch ein globales CDN für das Caching von Feature-Kacheln und statischen App-Antworten. Erfahren Sie mehr über das Steuern des CDN-Cache für gehostete Feature-Layer in ArcGIS Online. Das ArcGIS Online CDN wird auch verwendet, um Antworten für öffentlich gecachte Kartenbild-Layer (Raster-Kacheln) und Vektorkachel-Layer sowie für die verschiedenen ArcGIS Online-Grundkarten-Services zu beschleunigen.

CDNs können auch mit in ArcGIS Enterprise gehosteten Webanwendungen verwendet werden. Achten Sie jedoch darauf, zwischen statischen Ressourcen, die für das Caching in einem CDN geeignet sind, wie z. B. HTML-, CSS- und JavaScript-Dateien, und dynamischen REST-API-Antworten zu unterscheiden, die nicht gecacht werden sollten, um unerwartetes Benutzerverhalten zu vermeiden. Seien Sie auch bei der Verwendung eines CDN besonders vorsichtig in Bezug auf Upgrades. Der CDN-Cache sollte zwangsweise ungültig gemacht werden, wenn ein Upgrade für ArcGIS Enterprise durchgeführt oder eine Anwendung geändert wird. Dadurch wird sichergestellt, dass Benutzer keine veralteten Informationen erhalten.

Der Blogbeitrag A Content Delivery Network (CDN) approach to ArcGIS Enterprise using AWS CloudFront enthält ein Beispiel für die Verwendung eines CDNs mit ArcGIS Enterprise.

Top