在 ArcGIS 中优化性能

要为访问服务的用户提供类似级别的性能,必须了解有不同的优化方法,具体取决于地理空间服务类型。 可用的选项可能取决于后端数据源或者使用的软件部署模式。 要确保积极用户体验,必须了解不同类型的缓存和分块以及其他形式的优化。 本节简要介绍了 ArcGIS 架构不同层中的各种性能优化方法。

性能网络设计

部署 ArcGIS 组件的网络设计是影响性能的关键因素(性能好和差)。 企业系统通常具有全球性特征,在各种网络条件和连接中为用户提供服务,并且 ArcGIS 组件和工作流在对网络连接的依赖方面存在重要差异。 ArcGIS 工作流的网络注意事项的广度比本主题更广泛,但一些初步建议和注意事项包括:

  • 通常,对于日常 GIS 操作,网络延迟比网络带宽对用户体验的影响更大。 对于下载数据、复制文件或查看大型影像数据集等活动,带宽也很重要。
  • 从 ArcGIS Pro 直接流向数据库的流量对延迟非常敏感,在查看和编辑数据,或者使用和更改方案时,将发出许多较小的请求。
  • 从 ArcGIS Server 到数据库、文件或对象存储的流量也需要低延迟和普遍较高的带宽。 这允许服务器进程访问数据,转换数据以匹配用户请求,并将优化的响应发送回给用户。
  • 与桌面客户端相比,访问 Web 应用的客户端(例如访问 Web 应用的浏览器)对网络限制的敏感度较低,因为 Maps SDK for JavaScript 会优化请求以减少过多的流量。
  • 许多现代网络通过网络对等连接和其他技术模糊了本地资源和云资源之间的区别,这可能导致云资源与本地资源或客户端之间的延迟非常低。 通常,建议将客户端、服务器进程、存储和数据库在同一个“网络区域”中托管。 例如,将它们全部托管在云中,或全部在本地托管,但在某些情况下,可以将客户端与服务器分离,或将服务器与数据库分离。 此设计是否适合您的系统取决于您的网络设计和影响的结构化测试。

优化 Web 应用程序

Web 应用程序从 Web 服务器交付,该服务器通常是 ArcGIS Online SaaS 服务、托管 ArcGIS Web Adaptor 的 Web 服务器或专用于托管自定义 Web 应用程序的 Web 服务器。 下面介绍了托管优化 Web 应用程序的方法。

构建过程

在部署应用程序之前,可以使用构建进程(也称为极简化或捆绑)来缩减应用程序的静态资产(如 JavaScript、CSS 和 HTML 文件)的大小和复杂性,或从这些文件中移除不需要的信息。 虽然有许多有效的方法可以建立成功且合适的构建进程,但这些过程通常与用于创作 Web 应用程序的应用程序框架密切相关。

HTTP 响应缓存

要优化 Web 应用程序性能,另一种方法是为 Web 应用程序的静态资产启用 HTTP 响应缓存。 此配置为最终客户端提供来自 Web 服务器的响应标头,指示静态资产可以在客户端中缓存以及可以缓存多长时间。 这允许客户端浏览器避免在重新加载应用程序时出现完整的往返请求,因为该文件的内容已本地存储到客户端计算机,并按原样重新使用,直到达到缓存有效期时间。 可以通过 Web 服务器或其他反向代理或应用程序加速软件层,有选择地为某些文件类型启用 HTTP 响应缓存。

内容传送网络 (CDN)

在 ArcGIS Online 中托管的 Web 应用程序已利用这两种优化模式,因为它们是在部署之前构建的,并在利用静态应用程序响应的内容传送网络 (CDN) 缓存的 SaaS 环境中托管。

CDN 也可以与 ArcGIS Enterprise 一起使用,但要小心区分适合在 CDN 中缓存的静态资产(例如 HTML、CSS 和 JavaScript 文件)与不应缓存以免意外用户行为的动态 REST API 响应。 在考虑使用与升级相关的 CDN 时,还要特别小心,因为当软件升级或应用程序更改时,CDN 缓存应强制失效,以确保用户不会收到过时的信息。

优化 Web 服务

在 ArcGIS 环境中可以使用许多不同类型的 Web 服务,其中一些服务将根据动态数据源进行显示或响应。 没有一种万能的方法来缓存和优化这些服务,而是应该考虑和规划使用各种模式。 优化 Web 服务的常见方法包括:

  • 栅格切片缓存
  • 矢量切片缓存

这两种方法都采用输入数据(来自任何来源),否则可能会通过地图、要素或影像服务动态访问这些数据,并将其缓存到切片中。 这些切片是预定义的数据包,按标准多级格网进行组织。 缓存切片允许客户端同时请求给定比例的多个预定义切片,这些切片以切片形式“预呈现”,因此无需请求后端数据,也无需动态绘制符号系统或要素。

  • 栅格切片缓存指缓存到栅格切片中的数据。 这些切片是显示预呈现数据视图的图像,然后该视图在客户端上绘制为针对每个显示范围的多个拼接切片集合。 栅格切片可以基于地图服务、托管要素服务或影像服务进行创建,每种切片的注意事项略有不同。
  • 矢量切片缓存在概念上类似,但切片是压缩的二进制文件(基于协议缓冲区),其中将要素存储为几何和属性,剪切成单独的切片,然后在客户端上重新组合和呈现。

相关资源:

栅格切片缓存策略

栅格切片缓存是一种有效的方法,用于传递应以一个主要制图表达方式查看的相对静态数据。 虽然栅格切片可以具有高性能,但它们无法为用户提供查询属性、识别要素或更改符号、关闭标注图层等功能。

虽然栅格切片多年来一直用于提供制图底图,但出于各种性能、地图质量和灵活性原因,这些服务目前最常使用矢量底图。 栅格切片仍用于提供许多基于卫星或正射影像的影像底图或服务,因为这些服务旨在呈现一个经过精心平衡的影像图层作为应用程序或工具的背景。

矢量切片缓存策略

矢量切片缓存是一种较新但受到广泛支持的缓存数据方法,其中栅格切片可能会因其他原因而受到限制或不适用。 矢量切片的生成速度更快,尺寸更小,这会给切片集的存储以及通过网络连接将其传输到客户端的速度带来诸多好处。

矢量切片还允许通过使用矢量切片样式进行动态渲染,这可以完全在客户端(例如浏览器或本机应用程序)上进行配置或更新,并且可以动态显示或隐藏不同的图层、根据属性进行过滤以及显示相同数据的多个不同制图版本,所有这些都使用相同的单一矢量切片图层。

栅格切片缓存和矢量切片缓存都具有各种各样的配置、选项和选择,需要在优化服务期间进行选择。 有关这些领域的其他指导,请参阅其他 Esri 文档、资源和会议录。

要素切片

另一种相关的优化方法是 ArcGIS 的一项新功能,称为要素切片。 要素切片不是由规划进程(如矢量切片或栅格切片)预生成的,而是由功能感知型客户端生成的,这些客户端请求标准缩放级别的标准化数据范围。 由于这些请求在不同客户端之间是相同的,因此要素可以由干预 CDN 或代理缓存,并重用或重新发送到不同的客户端。 此功能仅供专门使用此要素的客户端使用,主要通过 ArcGIS Maps SDK for JavaScript,但也可通过 ArcGIS Pro 和使用 ArcGIS Maps SDK 构建的本机应用程序使用。 要素切片的使用依赖于几个关键假设:

  • 仅当向支持此功能的要素图层(基于地图服务或要素服务)发出请求时,才使用要素切片,该功能因版本而异。 基于 ArcGIS Online 的托管要素服务多年来一直支持此功能。
  • 通常,要素切片由客户端自动从支持它们的服务中请求。 虽然 ArcGIS Online 为这些要素切片提供了多个缓存图层,但基于 ArcGIS Enterprise 的图层还需要考虑充分利用此要素的其他注意事项。
  • ArcGIS Data Store 的对象存储功能旨在支持要素切片的缓存,以便请求已为其他用户请求生成的要素切片的用户可以接收该现有切片,从而实现快速响应并将结果缓存一段时间。 此功能需要使用 REST API 请求在托管要素图层中支持在各个图层上进行缓存

ArcGIS Online 中的托管要素服务包括启用优化图层绘制的选项,该选项可以在数据库中生成分辨率较低的数据,以在更小或进一步缩小的视图比例下使用。 使用这些比例时,要素切片生成进程会自动查询此分辨率降低的数据,这反过来又可以提高响应性能。

数据源和存储

除了应用程序和服务优化之外,对于性能改进同等重要的领域是特定服务背后的数据存储和特征。 Web 服务中使用的大多数数据具有表格特征(影像服务除外),并且通常涉及以下两者:

  • 几何 - 具有几何或几何数据类型的数据列
  • 属性 - 具有其他受支持数据类型的列

几何和属性都可以进行优化,以支持改进的服务性能。 要了解影响数据访问性能的设置,请参阅 ArcGIS Pro 文档中有关这些领域的其他可用文档。

优化属性

您可以通过属性缩减来优化属性使用。 简而言之,这需要移除或隐藏表中可能存在但应用程序或用例不需要的列或属性的过程。 要实现此目的,可通过在不需要列时将其移除,或者在创作以进行发布时取消选中列以在地图中显示这些列(例如,对于地图图像图层)。

建立属性索引

属性索引ji建立是另一个重要的考虑因素,主要是当列将用于在应用程序中进行过滤或查询时。 当请求过滤器基于已知属性或正在查询文本、数字或基于日期的属性时,可通过建立索引更快、更高效地查询,并且建议通过添加属性索引在关系数据库中利用已构建的优化技术。

优化几何

还可以通过多种重要方式优化几何列 – 具体取决于数据的用例和要求。 一种选项是空间制图综合,通常也称为简化,它是简化、平滑或降低几何制图表达(如线或面)的细节层次的过程,以减小要素大小并降低存储和处理要求。 如果原始数据在所包含的折点方面过于精确或过于详细,则可以永久完成此过程,也可以在用于可视化的数据的只读副本上完成,同时保留原始数据中的完整详细信息。

密切相关指降低空间精度的理念,它指的是几何或地理数据类型,它通常存储要素每个折点的实际坐标的小数值,例如 124999.24541512。 该值表示一个线性单位,它取决于数据集的坐标系,该单位可能大至十进制度,也可能小至英尺或米。 无论如何,确保捕获的空间精度反映数据的实际用例对于功能和性能都很重要。

对于具有基于米的线性单位的坐标系中的数据,存储为(123456.789101112、234567.891011121)的几何的精度为 9 位小数位数,相当于纳米级精度。 如果数据是由 GPS 单元捕获的,精度为 1m(平均),则该精度值显著夸大了实际测量精度。 通过移除小数部分来降低数据集的空间精度不仅更准确,而且在网络请求中传输几何时,几何的大小将减小 50%,这有助于解决从序列化过程到带宽限制的所有问题。 对于高度详细的面要素,使用适当的空间精度尤为重要,因为折点的数量可能很快达到数千条记录,并且由此对服务性能产生显著影响。

除了属性和几何调整之外,其他更高级别的数据存储方法可能有助于优化性能,包括:

  • 使用数据库视图或具体化视图在数据库级别存储经常访问的查询,然后可以将其发布到地图服务中,以在 ArcGIS 应用程序中使用
  • 考虑文件地理数据库是否会从碎片整理中受益 - 此作可以通过重新组织经常编辑的文件地理数据库的内部存储来提高性能
  • 企业级地理数据库包括各种其他性能注意事项,其中一些可能是特定于数据库的,但在使用版本化数据时,必须考虑压缩分析数据集操作,在使用多编辑器工作流时,必须考虑各种性能注意事项。

镶嵌和影像服务

影像服务通常由镶嵌数据集构建,镶嵌数据集是遵循上述许多优化建议的地理数据库对象。 此外,还需要考虑几种特定于影像服务的优化技术:

  • 镶嵌设置(包括每个镶嵌的最大栅格数和最大影像大小)都会对服务性能产生影响,方法是确保系统不会搜索太多影像来构建生成的镶嵌,并且生成的影像不会太大,因此构建影像并将其发送回客户端不会超过用户访问镶嵌的网络承载能力。
  • 镶嵌数据集概览存在的主要目的是提高较小比例(进一步缩小)下的服务性能 - 概览表示镶嵌数据集的预渲染视图,其中数据不经常更改,或者在较小比例下不需要图像细节。 创建概览并根据需要进行更新,可以显著提高用户影像服务的显示性能。
  • 源图像的格式和配置也很重要,因为优化程度各异的图像格式会影响性能,且需考量图像金字塔等属性,这些属性可以通过前期计算成本进行计算,但会使该图像的所有未来用户受益。
Top