缓存影像服务可以作为静态或动态影像服务运行。通常,由于缓存影像服务的平铺结构和静态性质,它将比未缓存的服务(或作为动态服务访问)更快。当您访问缓存影像服务时,其默认行为是静态的,并且将限制您对服务属性的访问 - 这意味着您无法修改镶嵌方法或传输压缩。
任何可以显示影像服务的 web 应用程序都可以使用该缓存,只不过各应用程序检索和使用切片的方式各不相同。
ArcMap 和 ArcGIS Pro
显示缓存的影像服务时,影像服务的功能会受到限制。例如,无法更改镶嵌方法或传输压缩方法。但是,仍可执行更改符号系统和增强符号系统、识别像素、查询数据以及下载源数据之类的操作。
如果需要以动态方式使用影像服务并且使用镶嵌方法等功能,可以更改图层的模式。要更改模式,请右键单击影像服务图层,然后取消选中启用缓存视图模式。要以缓存服务形式使用影像服务,可再次选中此选项。
ArcGIS API for JavaScript 应用程序
使用 ArcGIS API 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 属性添加到服务并指定其默认值,请执行以下操作:
- 在 web 浏览器中打开 ArcGIS Server 管理员目录,然后以具有管理员权限的用户身份进行登录。URL 地址格式为 https://gisserver.domain.com:6443/arcgis/admin。
- 单击服务,然后从服务列表中选择要修改的图像服务。如果此处没有列出您的服务,则可能在根文件夹下的目录中列出。
- 在服务 - <服务名称> (<服务类型>) 页面,滚动至底部然后单击编辑。
- 在服务属性对话框中,找到服务 JSON 的属性部分。
- 将 cacheControlMaxAge 属性添加到该部分,然后指定属性值(以秒为单位),如:
"properties": { "cacheControlMaxAge": "2592000",
- 单击保存编辑。
- 在服务 - <服务名称>(<服务类型>)页面,验证属性部分中是否显示 cacheControlMaxAge 属性以及您为该属性指定的值。
在 Web 应用程序中叠加缓存
如前文所述,在设计与其他缓存服务相叠加的影像服务缓存时,需要注意重要的缓存设计因素。使用 ArcGIS API 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