Datapreparatie voor meer performance

Bij de ontwikkeling van webapplicaties is het uiteraard erg belangrijk om op de performance te letten. Daarbij is een aantal zaken belangrijk:

  1. Ken je doelgroep
  2. Ken het gebruik van je applicatie
  3. Ken de data en gebruik alleen het noodzakelijke
  4. Meten. Hiervoor zijn voor webontwikkelaars diverse tools beschikbaar zoals Fiddler en de developer Tools in Chrome
  5. Maak gebruik van de slimme functionaliteit die het ArcGIS-platform je biedt

Je haalt meer performance uit applicaties door de data op een goede manier te prepareren. Dat kan op verschillende manieren die in dit blog toegelicht worden.

Quantization
ArcGIS Online maakt bij het presenteren van data op de cliënt gebruik van een techniek die “quantization” heet. Dit wil zeggen dat de data al aan de server-kant geprepareerd wordt om op de cliënt zo snel mogelijk gerendered te worden. Quantization verlaagt de resolutie van lijnen en polygonen gebaseerd op hun grootte in werkelijkheid. Hierbij wordt berekend hoeveel units (bijvoorbeeld meters) een pixel op het scherm in werkelijkheid is. Vervolgens wordt de data “uitgedund” zodat er nooit meer dan één vertex per pixel naar de cliënt wordt gestuurd. Meer kan er ook niet weergeven worden in de applicatie. Deze manier van generalisatie helpt bij het verbeteren van de performance van JavaScript-applicaties zonder dat je daar als developer iets extra’s voor hoeft te doen.

Settings van een feature layer
In de settings van een feature layer zijn drie mogelijkheden om de performance van een applicatie te verbeteren:

  1. Optimize Layer Drawing – optimaliseer data voor weergave op kleinere schaal, terwijl de details op grotere schaal behouden blijven. Dit is praktisch bij complexere geometrieën zoals bijvoorbeeld grenzen.
  2. Spatial Index opnieuw genereren – om de performance van spatial queries te verhogen, is het verstandig om de Spatial Index opnieuw te genereren wanneer je data significant is gewijzigd. Bijvoorbeeld bij het tekenen van features op de kaart of het zoeken naar features.
  3. Cache tijd verhogen – Bij een publieke feature service, wordt deze door ArcGIS Online via een Content Delivery Network (CDN) geserveerd om de performance te verhogen. Wordt de kaart gebruikt in een applicatie, dan wordt de data van de service gecached door de CDN. Wanneer de data in de laag niet regelmatig wijzigt (editing en sync moeten ook uit staan) is het verstandig de cachetijd te verhogen zodat de gebruikers vaker gecachte resultaten terug krijgen en de kaart daarmee sneller beschikbaar is voor de eindgebruiker.

Data-optimalisatie
Data-optimalisatie heeft tot doel de download hoeveelheden zoveel mogelijk te reduceren. Het optimaliseren van de data voor gebruik in een applicatie kan in drie stappen:

  1. Generaliseren – door de data zelf te vereenvoudigen wordt het aantal vertices en daarmee het aantal coördinaatparen in een lijn of vlak aanzienlijk verminderd. De hoeveelheid data die naar de cliënt gestuurd wordt neemt hierdoor ook af. ArcGIS Online doet dit automatisch, maar door ook zelf eerst de data te generaliseren verhoogt de performance omdat ArcGIS Online dan minder werk hoeft te doen.
Performance verbetering door gegeneraliseerde gemeentegrenzen
  1. Verminder het aantal kolommen – door het aantal kolommen te verminderen hoeft er ook minder data naar de cliënt gestuurd te worden. Denk dus goed na welke kolommen echt nodigzijnin de applicatie en beperk je tot alleen daartoe. Om te zorgen dat de dataintegriteit intact blijft kun je ervoor kiezen om in ArcGIS Online een view op de data te maken met een filter. Op die manier kun je per applicatie bepalen welke kolommen nodig zijn op de cliënt, maar werkt je vanuit één databron die alle kolommen bevat. 
  2. Haal de data in één keer op – door de data meteen bij het laden op te halen is het beschikbaar op de cliënt. De response vandeapplicatie verbeterd omdat er geen data van de server gehaald hoeft te worden. Doordat de data in het geheugen op de cliënt geladen wordt, is dit niet geschikt voor mobiele toepassingen. Ook verhoogt dit de initiële laadtijd van de applicatie. Het voordeel is daarentegen dat de applicatie veel interactiever wordt met een betere User Experience als gevolg. 

 In deze demo kan je met de “Add” en “Remove” knoppen op verschillende schaalniveaus features toevoegen zodat je ziet in hoeverre deze gegeneraliseerd is: https://esrinederland.github.io/WebinarJSPerformance/Demos/generalization.html  

 GeometryEngine en GeometryService
Om in een webapplicatie geografische analyses te doen, zoals buffer en intersect, kan je de GeometryService gebruiken. Onbekender is de cliënt side variant: de GeometryEngine. Het grote voordeel van de GeometryEngine is dat je niet voor elke operatie een call doet naar de server. Daardoor is de GeometryEngine over het algemeen aanzienlijk sneller dan de GeometryService. 

Bekijk in de volgende demo de performance van de GeometryEngine:
https://esrinederland.github.io/WebinarJSPerformance/Demos/geometryengine.html  

Zelf met performance aan de slag
Wat kun je aan de hand van dit blog nu zelf doen? Bekijk je applicaties en kijk hoe je deze op basis van bovenstaande tips nog sneller kunt maken. Heb je daarover nog vragen, of wil je een keer sparren over andere ArcGIS developer onderwerpen, stuur gerust een email naar developers@esri.nl. We denken graag met je mee! 

Next Article

Deeplearning model: Text SAM

Read this article