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.
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.
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.
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.
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.
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:
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:
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:
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:
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:
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:
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.
To learn more about layer types, see these resources:
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:
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.
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:
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.
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.
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:
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:
For additional resources on image service and mosaic optimization, see the ArcGIS Imagery Workflows website.