Optimize web maps, layers, and apps

Most users will interact with geospatial resources through maps and apps. These maps and apps in turn rely on layers and web services, and you can optimize the settings of each of these types of resource to meet your users’ needs.

Optimize web apps

Web applications in a Web GIS context are generally composed of static HTML, JavaScript and CSS files that are delivered from a web server and rendered in a client browser. Many standard applications are hosted as part of ArcGIS Online or an ArcGIS Enterprise deployment, but externally-developed applications can be hosted on any web server, including one that already hosts an ArcGIS Web Adaptor. Methods for optimizing web applications are described below.

Build process

Prior to deploying an application, a build process (also including or known as minification or bundling) can be used to reduce the size and complexity of the application’s static assets or remove unneeded information from these files. While there are many approaches to establishing a successful and suitable build process, these processes are often closely tied to the application framework used to author the web application.

Web applications hosted in ArcGIS Online are automatically built before deployment, but custom applications may require additional processes to optimize their static assets.

HTTP response caching

Another method used to optimize web application performance is to enable HTTP response caching for the static assets of the web application. This configuration provides the end client with a response header from the web server, indicating that the static asset can be cached in the client and how long it can be cached for. This allows the client browser to avoid a full round-trip request on a reload of the application, as the contents of that file are already stored locally to the client machine and are re-used as-is until the cache expiration time is reached.

HTTP response caching can be enabled selectively for certain file types, either through a web server or another reverse proxy or application acceleration software layer. When response caching for static assets is enabled, apps will load more quickly for repeat users, improving their overall experience.

Optimize web maps

In ArcGIS, web maps are designed to be shared so that people can visualize and interact with an area of common interest or concern. Web maps are an effective way to disseminate all kinds of data and analysis results to their intended audiences. Because the reach of web maps can be broad, it’s important to consider various design aspects up front when building web maps.

Style and symbology of layers

When you style map layers in Map Viewer, the nature of the data determines the styling options that appear by default in the Styles pane. You can then experiment with color ramps, line weights, transparency, symbols, and other graphic elements, and see your choices reflected immediately on the map. Effective symbology choices make it easier for map readers to understand the information in the map.

Symbology also affects the drawing performance. Complex multi-layered symbology can be computationally intensive to render. Custom symbols can require additional queries to draw a layer. Be aware that different clients use different methods to render symbology, so you should test the performance in all the clients that are expected to render the map.

To learn more about styling layers in a web map, see these resources:

Use client-side aggregation

Layers that have many individual features visible at a certain scale may take a long time to draw and can make it hard to identify spatial patterns. Client-side aggregation techniques such as clustering and binning may reduce the number of vertices to draw, which may improve performance.

As an example, if a layer contains 100,000 points, but is aggregated into 100 clusters, the client only has to draw 100 points instead of 100,000. Aggregating features also makes it easier for map readers to see spatial patterns in large datasets. In most cases, clustering or aggregated features re-render at different zoom scales, so the user can still access individual features or see their distribution once the proper scale is reached.

To learn more about client-side aggregation, see these resources:

Configure layers with a visible range

Specifying the zoom level at which content is drawn is known as setting the visible range or configuring a scale dependency. Proper scale dependency configuration will ensure that the layers in your web map draw only for a range of scales where the features in the layer are relevant to the map reader. For example, you can use the visibility range property to ensure individual building footprints are only drawn when the map is zoomed in to scale where it is possible to distinguish the individual buildings.

To learn more about setting the visible range, see these resources:

Use filters

It is common for layers in a web map to have more information than necessary for a particular use case. Use attribute filters to reduce the number of features the map needs to request and render. In addition to improving the rendering performance of the map, filters also make it easier for map readers to focus on the information that is relevant to their use case.

When filtering by time, avoid dynamic relative time queries such as “in the last week” if the map will be accessed by a large number of users. These queries need to be constantly re-evaluated against the current time, which prevents the effective use of caching. Instead, try to use absolute queries against attributes stored in the layer’s table.

To learn more about using filters, see these resources:

Configure layers with a refresh interval

When the data in a web map are updated, the map does not refresh by default. You can, however, define a refresh interval on a per layer basis to keep the layer refreshed with the data. When a refresh interval is set, the web map fetches the layer data on a regular schedule, without reloading the entire map interface. While this configuration can keep the map view fresh, it also increases the load on the server. As a rule of thumb, use a refresh interval only for data that changes frequently enough for a user to need to see changes during their web map or application session, and rely on map refreshes or new sessions for data that changes less frequently. 

To learn about configuring a refresh interval, see these resources:

Optimize web layers

Configuration settings for a layer such as symbology, filters or visible fields can be saved either in a web map, as the default view of a layer, or as a reference to the layer (a feature layer referencing the original service). When a single layer may be used in multiple web maps, save configurations to the layer or a referenced layer to avoid reconfiguring the layer in each new web map. Layers also have their own configuration settings separate from web maps, such as optimized geometries or attribute indices. Optimizations saved to a layer will apply by default in every web map where that layer is added, and individual web maps can also override these settings in their own context.

To learn more about saving layer settings, see these resources:

Choose the optimal layer type

There are several different types of layers, each of which have different optimal use cases. The following are some of the most common layer types, all of which are available in both ArcGIS Online and ArcGIS Enterprise.

  • Feature layers return feature attribute and geometry data to the client to be rendered by the client browser. They are appropriate for visualizing, querying, and analyzing vector data. Client-side rendering enables editing and real-time query analysis. Only feature layers can support feature tile caching. Feature layers can be created from both map and feature services.
  • Map image layers provide a rendered image of geospatial data to the client based on the current view extent, with a new request sent on each map pan or zoom. Map image layers are always based on a dynamic map service. They are appropriate for visualizing and querying a mix of vector and raster data when a specific rendering style or symbology set is required. Map image layers in ArcGIS Enterprise also support caching into raster tiles.
  • Imagery layers provide a rendered image of raster data to the client, and can also provide complex imagery data such as multi-band data back to a client. They are appropriate for visualizing and analyzing raster data. Imagery layers in ArcGIS Enterprise support map caching.
  • Raster tile layers (also sometimes called tile layers) pre-generate vector and raster data into tile cache. They are appropriate for visualizing vector and raster data. Because raster tile layers are always cached, they are best for layers that don’t change frequently, such as basemaps.
  • Vector tile layers provide vector data from a pre-generated vector tile cache. They are appropriate for visualizing vector data. Like raster tile layers, vector tile layers are best for data that don’t change frequently. Vector tile layers are generally smaller in size, faster to render, and support more capabilities compared to raster tile layers.

To learn more about layer types, see these resources:

Use hosted feature layer views

From hosted feature layers in both ArcGIS Online and ArcGIS Enterprise, you can create a separate item called a hosted feature layer view. The view can have different settings than the underlying hosted feature layer, while referencing the same data.

A common use case for views is to create a read-only layer that automatically reflects updates made to the underlying hosted feature layer. Because views can have their own sharing and editing settings, you can share the read-only view with your entire organization while sharing the editable hosted feature layer only with editors.

Views are also a good choice when you have multiple different use cases for a layer. You can configure different views that each have their own symbology or filtering settings, or which only include certain attributes from the origin layer.

Views can also be updated using source swapping to make it easier to minimize disruption when you make large data updates. Instead of updating the source data directly, you can create a new hosted feature layer with the new data and set that new layer as the source for the view. This strategy enables you to test the new layer thoroughly before swapping the source and fix any problems in the updated data before they affect people using the view. Source swapping is also much faster than appending large amounts of data to a layer or overwriting the layer.

To learn more about hosted feature layer views, see these resources:

Optimize layer drawing

Some line and polygon layers have many more vertices than are necessary at the scales where they are used. For hosted feature layers in ArcGIS Online, you can optimize the layer to render fewer vertices when zoomed out to scales where more vertices are not needed. This same strategy can be applied to non-hosted layers by generalizing detailed data, and using scale dependency to display generalized layers at small scales which showing full resolution data at larger scales.

Use time-aware layers

Time aware layers make it easier to query and filter on time. That capability allows users to see what happened at a specific time, or what may happen in the future. It can also improve layer performance by limiting the data the client requests and renders to just that data that is relevant to the time period of interest. Time-awareness can be configured for map, feature and image services and layers.

For learn more about time-aware layers, see these resources:

Optimize web services

Layers in a map allow users to access the capabilities of a web service. Some services published to ArcGIS Enterprise have their own settings that you can configure separately to optimize the service.

Configure service instance settings

In ArcGIS Server, map and image services run using a pool of server instance processes. The link below describes the configuration and tuning of this pool to deliver the best performance and resource utilization of your server resources. 

Consider a shared instance pool

Each running service instance process consumes memory, even when it is not actively handling requests. Map and image services can take advantage of shared resource pooling to use a single pool of server processes for multiple different services. Using shared instances reduces the memory usage of services that are not actively handling requests.

To learn more about using shared instances in ArcGIS Enterprise, see these resources:

Mosaics and image services

Image services are usually built from mosaic datasets, which are geodatabase objects that can take advantage of general data storage optimizations. In addition, there are several image service-specific optimization techniques to consider:

  • Mosaic settings, including the maximum number of rasters per mosaic and the maximum image size, each have an impact on service performance, by ensuring that the system is not searching for too many images to build the resulting mosaic, and that the resulting image is not so large that building it and sending it back to the client overwhelms the network access the user has to the mosaic.
  • Mosaic dataset overviews exist primarily to improve service performance at smaller scales (more zoomed out) – overviews represent pre-rendered views of a mosaic dataset, either where data does not change frequently or where the specifics of images are not needed at that small scale. Creating overviews, and updating them as needed, can improve the display performance of the image service significantly for users.
  • The format and configuration of the source images is also critical, as there are a variety image formats that can impact performance, as well as properties like image pyramids, which can be generated with an up-front compute cost but benefit all future users of that image.

For additional resources on image service and mosaic optimization, see the ArcGIS Imagery Workflows website.

Top