在 ArcGIS 中优化性能

ArcGIS 允许您向用户提供一系列资源:应用程序、地图、图层、服务和数据。 要为访问资源的用户提供最佳性能,必须了解有不同的优化方法,具体取决于资源类型。 可用选项可能取决于后端数据源、地理空间服务类型或其他因素。 需要了解不同类型的优化,才能确保实现积极有效的用户体验。

本节介绍评估用户需求、网络设计和缓存选项的常规策略。 有关特定优化策略的其他信息,请参阅优化 Web 地图和应用程序优化数据源和存储

评估用户需求

优化不仅仅意味着最大限度地减少 HTTP 请求的响应时间。 发送快速、低延迟但无益的响应的服务未必是经过优化的服务。 确定将使用资源或服务的人员以及原因。 了解用户希望通过与资源交互来回答的问题。 使用结构化测试确保资源在用户用于访问资源的不同客户端设备上运行良好。 在开发期间和资源可供常规使用后,纳入用户对资源有用性的反馈。

用户需求还将有助于告知哪些类型的性能优化值得实施。 如果一个资源每天只被一个小型内部群组使用几次,则无需将其优化为扩展到每秒数千个请求的程度。 然而,同样的优化对于全球公众使用的资源可能至关重要。

适用于性能的设计网络

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

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

使用请求和响应缓存

重复请求资源可能需要大量计算开销来生成这些资源。 提供缓存响应可以避免这种开销,从而减小系统资源利用率和响应时间。 最大限度地利用缓存可以显著提高 ArcGIS 资源的性能。

没有一种万能的方法可用于缓存在 ArcGIS 中使用的各种 Web 应用程序和服务,相反应考虑和规划使用各种模式。 常见的缓存方法包括:

  • 地图图像图层缓存,其中地图被预渲染为标准化栅格切片,这些切片可以在不生成服务器端地图的情况下返回给客户端。
  • 矢量切片缓存,其中地图中的要素被预渲染为压缩和优化的矢量数据切片,外部样式文件定义地图的显示。
  • 影像图层缓存,其中影像服务被缓存到标准切片中(与地图图像图层缓存几乎相同),以提高渲染速度或控制客户端访问。
  • 要素切片缓存,其中使用标准化范围查询要素图层,从而允许服务器进程缓存响应并将可缓存标头返回给客户端。
  • 客户端缓存,其中响应包括一个标头或属性,用于指示客户端在重新请求资源之前可以多次使用该资源。
  • 内容交付网络,这些网络是专门用于缓存对跨地理区域或全球多个存在点的响应的复杂组件。

栅格和矢量切片缓存可获取一些输入数据(这些数据可能只能通过地图、要素或影像服务动态访问),并将其缓存到切片中。 这些切片是显示渲染数据的预定义标准化图像。 客户端可通过缓存的切片同时为给定比例请求多个预渲染切片,因此在服务器访问和绘制任何后端数据时需要等待。 栅格和矢量切片缓存都可以通过创建切片图层来启用,而要素切片缓存需要对服务的属性进行额外配置。

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

相关资源:

地图图像图层缓存策略

地图图像图层切片是显示预渲染数据视图的栅格图像,这些图像随后会在客户端上绘制为针对每个显示范围的多个拼接切片集合。 栅格切片可以基于地图服务、托管要素服务或影像服务进行创建,每种切片的注意事项略有不同。

栅格切片缓存是一种有效的方法,用于传递应以一个主要制图表达方式查看的相对静态数据。 创建地图缓存所需的时间和计算资源可能很大,因此它最适合不经常更新的数据。 虽然栅格切片可以实现出色的性能和可扩展性,但它们无法为用户提供查询属性、识别要素或更改符号、关闭标注图层等功能。

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

要了解有关地图图像图层缓存的详细信息,请参阅以下资源:

矢量切片缓存策略

矢量切片缓存在概念上与栅格切片缓存类似,但切片是压缩的二进制文件(基于协议缓冲区),其中将矢量要素存储为几何和属性,剪切成单独的切片,然后根据单独的样式定义在客户端上重新组合和呈现。

矢量切片缓存适用于栅格切片可能因其他原因而受到限制或不合适的情况。 与栅格切片相比,矢量切片的生成速度更快,尺寸更小,这会给切片集的存储以及通过网络连接将其传输到客户端的速度带来诸多好处。

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

要素切片缓存策略

与矢量切片和栅格切片不同,要素切片不是由计划过程预先生成的。 相反,它们是由功能感知客户端生成的,这些客户端请求标准缩放级别的标准化数据范围。 由于这些请求在不同客户端之间是相同的,因此可以缓存要素并将其重用或重新发送到不同的客户端。 此功能仅供专门使用此要素的客户端使用,主要通过 ArcGIS Maps SDK for JavaScript,以及通过 ArcGIS Pro 和使用 ArcGIS Maps SDK 构建的本机应用程序使用。

要素切片的使用依赖于两个关键假设:

  • 该服务支持要素切片。 仅当向支持此功能的要素图层(基于地图服务或要素服务)发出请求时,才使用要素切片,该功能因版本而异。 基于 ArcGIS Online 的托管要素服务多年来一直支持此功能。 在 ArcGIS Enterprise 中,需要使用 REST API 请求配置托管要素服务中的各个图层,才能启用要素切片缓存,并且缓存的要素切片将存储在对象存储中。
  • 发出请求的客户端支持要素切片。 通常,支持要素切片的客户端会自动从支持这些切片的服务中请求它们。 虽然 ArcGIS Online 为这些要素切片提供了多个缓存图层,但基于 ArcGIS Enterprise 的图层还需要考虑充分利用此要素的其他注意事项。

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

要了解有关要素切片缓存的详细信息,请参阅以下资源:

客户端缓存优化策略

在 ArcGIS Enterprise 中,可以将地图要素服务配置为返回 Cache-Control 标头,以允许用户的浏览器利用基于 Etag 值的缓存响应内容。

当客户端向 ArcGIS Server 发送请求以请求地图导出或查询应用了此设置的要素服务时,来自服务器的响应通常可以由浏览器缓存并在一段时间内重复使用。 但您可以考虑根据地图或要素服务及其相关数据在应用程序中的使用方式,调整浏览器在其缓存中使用响应的时间长度。 要实现此目的,可通过将名为 cacheControlMaxAge 的属性添加到服务的 JavaScript 对象标记法 (JSON)。

内容传送网络 (CDN)

内容交付网络 (CDN) 将内容缓存在地理位置更接近用户的边缘服务器上。 CDN 通过消除对数据库查询的需求并减少较长网络出行带来的延迟,缩短请求的响应时间。

公开共享的托管要素图层和 ArcGIS Online 中托管的 Web 应用程序静态资产都会自动使用全局 CDN 来缓存要素切片和静态应用程序响应。 了解如何在 ArcGIS Online 中控制托管要素图层的 CDN 缓存。 ArcGIS Online CDN 还用于加速对公共缓存地图图像图层(栅格切片)和矢量切片图层以及各种 ArcGIS Online 底图服务的响应。

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

博客文章使用 AWS CloudFront 实现 ArcGIS Enterprise 的内容交付网络 (CDN) 方法举例说明了如何将 CDN 与 ArcGIS Enterprise 结合使用。

Top