ArcGIS 允许您向用户提供一系列资源:应用程序、地图、图层、服务和数据。 要为访问资源的用户提供最佳性能,必须了解有不同的优化方法,具体取决于资源类型。 可用选项可能取决于后端数据源、地理空间服务类型或其他因素。 需要了解不同类型的优化,才能确保实现积极有效的用户体验。
本节介绍评估用户需求、网络设计和缓存选项的常规策略。 有关特定优化策略的其他信息,请参阅优化 Web 地图和应用程序和优化数据源和存储。
优化不仅仅意味着最大限度地减少 HTTP 请求的响应时间。 发送快速、低延迟但无益的响应的服务未必是经过优化的服务。 确定将使用资源或服务的人员以及原因。 了解用户希望通过与资源交互来回答的问题。 使用结构化测试确保资源在用户用于访问资源的不同客户端设备上运行良好。 在开发期间和资源可供常规使用后,纳入用户对资源有用性的反馈。
用户需求还将有助于告知哪些类型的性能优化值得实施。 如果一个资源每天只被一个小型内部群组使用几次,则无需将其优化为扩展到每秒数千个请求的程度。 然而,同样的优化对于全球公众使用的资源可能至关重要。
部署 ArcGIS 组件的网络设计是影响性能的关键因素(性能好和差)。 企业系统通常具有全球性特征,在各种网络条件和连接中为用户提供服务,并且 ArcGIS 组件和工作流在对网络连接的依赖方面存在重要差异。 ArcGIS 工作流的网络注意事项的广度比本主题更广泛,但一些初步建议和注意事项包括:
重复请求资源可能需要大量计算开销来生成这些资源。 提供缓存响应可以避免这种开销,从而减小系统资源利用率和响应时间。 最大限度地利用缓存可以显著提高 ArcGIS 资源的性能。
没有一种万能的方法可用于缓存在 ArcGIS 中使用的各种 Web 应用程序和服务,相反应考虑和规划使用各种模式。 常见的缓存方法包括:
栅格和矢量切片缓存可获取一些输入数据(这些数据可能只能通过地图、要素或影像服务动态访问),并将其缓存到切片中。 这些切片是显示渲染数据的预定义标准化图像。 客户端可通过缓存的切片同时为给定比例请求多个预渲染切片,因此在服务器访问和绘制任何后端数据时需要等待。 栅格和矢量切片缓存都可以通过创建切片图层来启用,而要素切片缓存需要对服务的属性进行额外配置。
所有缓存策略都具有各种各样的配置、选项和选择,需要在优化服务期间进行选择。 有关这些领域的其他指导,请参阅 Esri 文档、资源和会议录。
相关资源:
地图图像图层切片是显示预渲染数据视图的栅格图像,这些图像随后会在客户端上绘制为针对每个显示范围的多个拼接切片集合。 栅格切片可以基于地图服务、托管要素服务或影像服务进行创建,每种切片的注意事项略有不同。
栅格切片缓存是一种有效的方法,用于传递应以一个主要制图表达方式查看的相对静态数据。 创建地图缓存所需的时间和计算资源可能很大,因此它最适合不经常更新的数据。 虽然栅格切片可以实现出色的性能和可扩展性,但它们无法为用户提供查询属性、识别要素或更改符号、关闭标注图层等功能。
虽然栅格切片多年来一直用于提供制图底图,但出于各种性能、地图质量和灵活性原因,这些服务目前最常使用矢量底图。 栅格切片仍用于提供许多基于卫星或正射影像的影像底图或服务,因为这些服务旨在呈现一个经过精心平衡的影像图层作为应用程序或工具的背景。
要了解有关地图图像图层缓存的详细信息,请参阅以下资源:
矢量切片缓存在概念上与栅格切片缓存类似,但切片是压缩的二进制文件(基于协议缓冲区),其中将矢量要素存储为几何和属性,剪切成单独的切片,然后根据单独的样式定义在客户端上重新组合和呈现。
矢量切片缓存适用于栅格切片可能因其他原因而受到限制或不合适的情况。 与栅格切片相比,矢量切片的生成速度更快,尺寸更小,这会给切片集的存储以及通过网络连接将其传输到客户端的速度带来诸多好处。
矢量切片还允许通过使用矢量切片样式进行动态渲染,这可以完全在客户端(例如浏览器或本机应用程序)上进行配置或更新,并且可以动态显示或隐藏不同的图层、根据属性进行过滤以及显示相同数据的多个不同制图版本,所有这些都使用相同的单一矢量切片图层。
与矢量切片和栅格切片不同,要素切片不是由计划过程预先生成的。 相反,它们是由功能感知客户端生成的,这些客户端请求标准缩放级别的标准化数据范围。 由于这些请求在不同客户端之间是相同的,因此可以缓存要素并将其重用或重新发送到不同的客户端。 此功能仅供专门使用此要素的客户端使用,主要通过 ArcGIS Maps SDK for JavaScript,以及通过 ArcGIS Pro 和使用 ArcGIS Maps SDK 构建的本机应用程序使用。
要素切片的使用依赖于两个关键假设:
ArcGIS Online 中的托管要素服务还包括启用优化图层绘制的选项,该选项可以在数据库中生成分辨率较低的数据,以用于显示更小比例(进一步缩小)。 使用这些比例时,要素切片生成进程会自动查询此分辨率降低的数据,这反过来又可以提高响应性能。
要了解有关要素切片缓存的详细信息,请参阅以下资源:
在 ArcGIS Enterprise 中,可以将地图和要素服务配置为返回 Cache-Control 标头,以允许用户的浏览器利用基于 Etag 值的缓存响应内容。
当客户端向 ArcGIS Server 发送请求以请求地图导出或查询应用了此设置的要素服务时,来自服务器的响应通常可以由浏览器缓存并在一段时间内重复使用。 但您可以考虑根据地图或要素服务及其相关数据在应用程序中的使用方式,调整浏览器在其缓存中使用响应的时间长度。 要实现此目的,可通过将名为 cacheControlMaxAge 的属性添加到服务的 JavaScript 对象标记法 (JSON)。
内容交付网络 (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 结合使用。