Skip To Content

应用程序如何访问和使用影像服务缓存

缓存的影像服务表现为静态或动态影像服务。 通常,由于缓存影像服务的平铺结构和静态性质,它将比未缓存的服务(或作为动态服务访问)更快。 当您访问缓存影像服务时,其默认行为是静态的,并且将限制您对服务属性的访问 - 这意味着您无法修改镶嵌方法或传输压缩。

任何可以显示影像服务的 web 应用程序都将使用缓存,尽管应用程序之间检索和使用切片的方式有所不同。

ArcGIS Pro

显示已缓存的影像服务时,其影像服务功能将受到限制。 例如,您将无法更改镶嵌方法或传输压缩方法。 但是,仍可执行更改符号系统和增强符号系统、识别像素、查询数据以及下载源数据之类的操作。

如果需要以动态方式使用影像服务并且使用镶嵌方法等功能,可以更改图层的模式。 要更改模式,请右键单击影像服务图层,然后取消选中启用缓存视图模式。 要以缓存服务形式使用影像服务,可再次选中此选项。

ArcGIS Maps SDK for JavaScript 应用程序

使用 ArcGIS Maps SDK for JavaScript 进行开发时,可通过 ArcGISTiledMapServiceLayer 类连接到缓存影像服务。 而使用这一缓存影像服务时,则要通过 REST 调用将切片从缓存目录检索到影像服务中。 切片请求所采用的格式为 http://<image service URL>/tile/<level>/<row>/<column>

  • 如果 URL 如下所示,则说明应用程序正通过 REST 请求成功获取切片:

    http://gisserver.domain.com:6080/arcgis/rest/services/myService/ImageServer/tile/10/1723/3495

  • 如果您看到影像服务的其他某种 URL 格式,则表明您的应用程序检索切片的方式的效率较低,或者未使用缓存。

在任一 Web 应用程序中查看单个缓存服务时,如果平移到了某个不存在任何切片的区域,应用程序将不会显示动态图像,从而导致您无法看到任何内容。

提示:

如果影像服务的显示速度比预期慢,请检查影像服务的 URL,以确定应用程序是否正在检索切片。 可通过以下方式执行此操作:在 Mozilla Firefox 4 中打开该应用程序,然后单击 Firefox > Web 开发者 > Web 控制台。 打开控制台后,单击网络按钮,然后开始缩放或平移影像服务。

提示:

请确保正在缓存的数据源与 web 应用程序中使用的其他数据在相同投影中。 否则,可能会看不到您的数据,因为大多数 Web 应用程序都无法对数据进行重新投影。 此外,确保缓存影像服务的切片方案与 web 应用程序中的其他缓存图层相同;否则,不会显示所有图层。

提高缓存影像服务的显示性能

当客户端向 ArcGIS Server 发送请求以显示影像服务时,服务器上的响应通常由浏览器进行缓存,并在一段时间之内重复使用。 此行为有助于 ArcGIS Server 获得最理想的影像服务显示性能。 但您可以考虑根据影像服务及其相关数据在应用程序中的使用方式来调整浏览器缓存中的响应将使用多长时间。 通过将名为 cacheControlMaxAge 的属性添加到服务的 JavaScript 对象标记法 (JSON),可实现上述操作。

cacheControlMaxAge 属性的使用方式

ArcGIS Server 影像服务响应包括实体标签 (ETag) 和缓存控制头。 ETag 头值是响应的唯一标识符。 缓存控制头具有一个最长期限值,该值可向浏览器提供有关浏览器缓存中响应可供重复使用的最大时段的信息。 该值由 cacheControlMaxAge 属性控制。

如果重复请求且尚未超过缓存的最长期限,则浏览器将使用缓存的响应而不会将请求发送到服务器。 如果最长期限已过期,则浏览器必须将请求发送到服务器,并通过与其缓存中响应相对应的相关 ETag 值设置 IF-NONE-MATCH 头。 ArcGIS Server 评估请求,并使用 ETag 值来确定响应是否更改。 如果服务器的响应与浏览器中的副本不同,则服务器会将一个新的响应发送到浏览器。 如果响应与浏览器上的副本相同,则服务器会警告浏览器继续在其缓存中使用响应。

定义 cacheControlMaxAge 属性值

ArcGIS Server 管理员可定义 cacheControlMaxAge 属性,以指定允许浏览器使用缓存响应的时长。 通过减少 ArcGIS Server 发送完整响应的需要,可提高浏览器缓存的效率,有助于优化应用程序,从而节省网络带宽。

对于不允许客户端本地缓存切片的缓存影像服务,默认值为 0。这表示浏览器始终重新发送请求,且 ArcGIS Server 将处理请求并在内容发生更改的情况下向浏览器发送完整的响应。

对于允许客户端本地缓存切片的缓存影像服务,默认值为 12 小时(43,200 秒)。 这表示如果在 12 小时内重复请求,浏览器将使用其缓存中的响应。 该值适用于大多数应用程序。

了解有关本地缓存的详细信息

对于地图或数据不会发生频繁更改的缓存图像服务,建议将默认值增加到 30 天(2,592,000 秒)或更长,从而最大限度地降低网络流量。

要将 cacheControlMaxAge 属性添加到服务并指定其默认值,请执行以下操作:

  1. 在 web 浏览器中打开 ArcGIS Server 管理员目录,然后以具有管理员权限的用户身份进行登录。 URL 地址格式为 https://gisserver.domain.com:6443/arcgis/admin
  2. 单击服务,然后从服务列表中选择要修改的图像服务。 如果此处没有列出您的服务,则可能在根文件夹下的目录中列出。
  3. 服务 - <服务名称> (<服务类型>) 页面,滚动至底部然后单击编辑
  4. 服务属性对话框中,找到服务 JSON 的属性部分。
  5. cacheControlMaxAge 属性添加到该部分,然后指定属性值(以秒为单位),如:
    "properties": {
      "cacheControlMaxAge": "2592000",
  6. 单击保存编辑
  7. 服务 - <服务名称>(<服务类型>)页面,验证属性部分中是否显示 cacheControlMaxAge 属性以及您为该属性指定的值。

在 web 应用程序中叠加缓存

如前文所述,在设计与其他缓存服务相叠加的影像服务缓存时,需要注意重要的缓存设计因素。 使用 ArcGIS Maps SDK for JavaScript 构建的 Web 应用程序要求叠加缓存时坐标系和切片大小必须匹配。 最好尽可能地匹配更多的比例。 达到此目的的最简便方式就是先匹配两个缓存的切片方案,然后仅以对每个缓存均适用的比例创建切片。 这样,您可以确保您已匹配坐标系和切片大小,并且软件可以识别出这两个缓存具有相同的比例。

建议的切片方案是 ArcGIS Online/Google 地图/Bing 地图切片方案。

OGC WMTS

开放地理空间联盟 (OGC) 的 Web 地图切片服务 (WMTS) 规范是一种在 web 上使用缓存影像块提供数字地图时需遵守的国际规范。 当您使用 ArcGIS Server 创建缓存地图服务或影像服务时,可通过 WMTS 规范自动访问该地图服务及其切片。

使用 WMTS 协议连接至缓存影像服务的 URL 使用以下模式:

https://gisserver.domain.com:6443/arcgis/rest/services/folder/service/ImageServer/WMTS

了解有关 WMTS 的详细信息