要为访问服务的用户提供类似级别的性能,必须了解有不同的优化方法,具体取决于地理空间服务类型。 可用的选项可能取决于后端数据源或者使用的软件部署模式。 要确保积极用户体验,必须了解不同类型的缓存和分块以及其他形式的优化。 本节简要介绍了 ArcGIS 架构不同层中的各种性能优化方法。
部署 ArcGIS 组件的网络设计是影响性能的关键因素(性能好和差)。 企业系统通常具有全球性特征,在各种网络条件和连接中为用户提供服务,并且 ArcGIS 组件和工作流在对网络连接的依赖方面存在重要差异。 ArcGIS 工作流的网络注意事项的广度比本主题更广泛,但一些初步建议和注意事项包括:
Web 应用程序从 Web 服务器交付,该服务器通常是 ArcGIS Online SaaS 服务、托管 ArcGIS Web Adaptor 的 Web 服务器或专用于托管自定义 Web 应用程序的 Web 服务器。 下面介绍了托管优化 Web 应用程序的方法。
在部署应用程序之前,可以使用构建进程(也称为极简化或捆绑)来缩减应用程序的静态资产(如 JavaScript、CSS 和 HTML 文件)的大小和复杂性,或从这些文件中移除不需要的信息。 虽然有许多有效的方法可以建立成功且合适的构建进程,但这些过程通常与用于创作 Web 应用程序的应用程序框架密切相关。
要优化 Web 应用程序性能,另一种方法是为 Web 应用程序的静态资产启用 HTTP 响应缓存。 此配置为最终客户端提供来自 Web 服务器的响应标头,指示静态资产可以在客户端中缓存以及可以缓存多长时间。 这允许客户端浏览器避免在重新加载应用程序时出现完整的往返请求,因为该文件的内容已本地存储到客户端计算机,并按原样重新使用,直到达到缓存有效期时间。 可以通过 Web 服务器或其他反向代理或应用程序加速软件层,有选择地为某些文件类型启用 HTTP 响应缓存。
在 ArcGIS Online 中托管的 Web 应用程序已利用这两种优化模式,因为它们是在部署之前构建的,并在利用静态应用程序响应的内容传送网络 (CDN) 缓存的 SaaS 环境中托管。
CDN 也可以与 ArcGIS Enterprise 一起使用,但要小心区分适合在 CDN 中缓存的静态资产(例如 HTML、CSS 和 JavaScript 文件)与不应缓存以免意外用户行为的动态 REST API 响应。 在考虑使用与升级相关的 CDN 时,还要特别小心,因为当软件升级或应用程序更改时,CDN 缓存应强制失效,以确保用户不会收到过时的信息。
在 ArcGIS 环境中可以使用许多不同类型的 Web 服务,其中一些服务将根据动态数据源进行显示或响应。 没有一种万能的方法来缓存和优化这些服务,而是应该考虑和规划使用各种模式。 优化 Web 服务的常见方法包括:
这两种方法都采用输入数据(来自任何来源),否则可能会通过地图、要素或影像服务动态访问这些数据,并将其缓存到切片中。 这些切片是预定义的数据包,按标准多级格网进行组织。 缓存切片允许客户端同时请求给定比例的多个预定义切片,这些切片以切片形式“预呈现”,因此无需请求后端数据,也无需动态绘制符号系统或要素。
相关资源:
栅格切片缓存是一种有效的方法,用于传递应以一个主要制图表达方式查看的相对静态数据。 虽然栅格切片可以具有高性能,但它们无法为用户提供查询属性、识别要素或更改符号、关闭标注图层等功能。
虽然栅格切片多年来一直用于提供制图底图,但出于各种性能、地图质量和灵活性原因,这些服务目前最常使用矢量底图。 栅格切片仍用于提供许多基于卫星或正射影像的影像底图或服务,因为这些服务旨在呈现一个经过精心平衡的影像图层作为应用程序或工具的背景。
矢量切片缓存是一种较新但受到广泛支持的缓存数据方法,其中栅格切片可能会因其他原因而受到限制或不适用。 矢量切片的生成速度更快,尺寸更小,这会给切片集的存储以及通过网络连接将其传输到客户端的速度带来诸多好处。
矢量切片还允许通过使用矢量切片样式进行动态渲染,这可以完全在客户端(例如浏览器或本机应用程序)上进行配置或更新,并且可以动态显示或隐藏不同的图层、根据属性进行过滤以及显示相同数据的多个不同制图版本,所有这些都使用相同的单一矢量切片图层。
栅格切片缓存和矢量切片缓存都具有各种各样的配置、选项和选择,需要在优化服务期间进行选择。 有关这些领域的其他指导,请参阅其他 Esri 文档、资源和会议录。
另一种相关的优化方法是 ArcGIS 的一项新功能,称为要素切片。 要素切片不是由规划进程(如矢量切片或栅格切片)预生成的,而是由功能感知型客户端生成的,这些客户端请求标准缩放级别的标准化数据范围。 由于这些请求在不同客户端之间是相同的,因此要素可以由干预 CDN 或代理缓存,并重用或重新发送到不同的客户端。 此功能仅供专门使用此要素的客户端使用,主要通过 ArcGIS Maps SDK for JavaScript,但也可通过 ArcGIS Pro 和使用 ArcGIS Maps SDK 构建的本机应用程序使用。 要素切片的使用依赖于几个关键假设:
ArcGIS Online 中的托管要素服务包括启用优化图层绘制的选项,该选项可以在数据库中生成分辨率较低的数据,以在更小或进一步缩小的视图比例下使用。 使用这些比例时,要素切片生成进程会自动查询此分辨率降低的数据,这反过来又可以提高响应性能。
除了应用程序和服务优化之外,对于性能改进同等重要的领域是特定服务背后的数据存储和特征。 Web 服务中使用的大多数数据具有表格特征(影像服务除外),并且通常涉及以下两者:
几何和属性都可以进行优化,以支持改进的服务性能。 要了解影响数据访问性能的设置,请参阅 ArcGIS Pro 文档中有关这些领域的其他可用文档。
您可以通过属性缩减来优化属性使用。 简而言之,这需要移除或隐藏表中可能存在但应用程序或用例不需要的列或属性的过程。 要实现此目的,可通过在不需要列时将其移除,或者在创作以进行发布时取消选中列以在地图中显示这些列(例如,对于地图图像图层)。
属性索引ji建立是另一个重要的考虑因素,主要是当列将用于在应用程序中进行过滤或查询时。 当请求过滤器基于已知属性或正在查询文本、数字或基于日期的属性时,可通过建立索引更快、更高效地查询,并且建议通过添加属性索引在关系数据库中利用已构建的优化技术。
还可以通过多种重要方式优化几何列 – 具体取决于数据的用例和要求。 一种选项是空间制图综合,通常也称为简化,它是简化、平滑或降低几何制图表达(如线或面)的细节层次的过程,以减小要素大小并降低存储和处理要求。 如果原始数据在所包含的折点方面过于精确或过于详细,则可以永久完成此过程,也可以在用于可视化的数据的只读副本上完成,同时保留原始数据中的完整详细信息。
密切相关指降低空间精度的理念,它指的是几何或地理数据类型,它通常存储要素每个折点的实际坐标的小数值,例如 124999.24541512。 该值表示一个线性单位,它取决于数据集的坐标系,该单位可能大至十进制度,也可能小至英尺或米。 无论如何,确保捕获的空间精度反映数据的实际用例对于功能和性能都很重要。
对于具有基于米的线性单位的坐标系中的数据,存储为(123456.789101112、234567.891011121)的几何的精度为 9 位小数位数,相当于纳米级精度。 如果数据是由 GPS 单元捕获的,精度为 1m(平均),则该精度值显著夸大了实际测量精度。 通过移除小数部分来降低数据集的空间精度不仅更准确,而且在网络请求中传输几何时,几何的大小将减小 50%,这有助于解决从序列化过程到带宽限制的所有问题。 对于高度详细的面要素,使用适当的空间精度尤为重要,因为折点的数量可能很快达到数千条记录,并且由此对服务性能产生显著影响。
除了属性和几何调整之外,其他更高级别的数据存储方法可能有助于优化性能,包括:
影像服务通常由镶嵌数据集构建,镶嵌数据集是遵循上述许多优化建议的地理数据库对象。 此外,还需要考虑几种特定于影像服务的优化技术: